フィールドセパレータの基準を満たすフィールドの数を返すためにawkを取得する方法はありますか?たとえば、私のファイルには
a b c d
そう、 awk --field-separator=" " | <something>
は4を返すはずです
NF
変数は、入力レコード内のフィールドの総数に設定されます。そう:
echo "a b c d" | awk --field-separator = "" "{print NF}"
表示されます
4
ただし、次のことに注意してください。
echo -e "a b c d\na b" | awk --field-separator = "" "{print NF}"
表示されます:
4 2
これが助けて、幸せな覚醒を願っています
NF
は、指定されたレコードのフィールドの数を示します。
[]$ echo "a b c d" | gawk '{print NF}'
4
複数行コンテンツのすべてのフィールド数のセットを知りたい場合は、次を実行できます。
X | awk '{print NF}' | sort -n | uniq
X
であるコンテンツを標準出力に出力するコマンド:cat
、echo
など。例:
file.txt:で
a b
b c
c d
e t a
e u
コマンド cat file.txt | awk '{print NF}' | sort -n | uniq
は次を印刷します。
2
3
そしてfile2.txt:
a b
b c
c d
e u
コマンド cat file2.txt | awk '{print NF}' | sort -n | uniq
は次を印刷します。
2
awk(1) FreeBSDでは--field-separator
を認識しません。代わりに-v
を使用します。
echo "a b c d" | awk -v FS=" " "{ print NF }"
移植可能なPOSIXの方法 は、フィールド区切り文字を定義するためのものです。