web-dev-qa-db-ja.com

awkによって返されるフィールドの数

フィールドセパレータの基準を満たすフィールドの数を返すためにawkを取得する方法はありますか?たとえば、私のファイルには

a b c d

そう、 awk --field-separator=" " | <something>は4を返すはずです

22
Sriram

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

これが助けて、幸せな覚醒を願っています

53
Douglas Meyer

NFは、指定されたレコードのフィールドの数を示します。

[]$ echo "a b c d" | gawk '{print NF}'
4
5
Mark Wilkins

複数行コンテンツのすべてのフィールド数のセットを知りたい場合は、次を実行できます。

X | awk '{print NF}' | sort -n | uniq

Xであるコンテンツを標準出力に出力するコマンド:catechoなど。例:

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
2
axelbrz

awk(1) FreeBSDでは--field-separatorを認識しません。代わりに-vを使用します。

echo "a b c d" | awk -v FS=" " "{ print NF }"

移植可能なPOSIXの方法 は、フィールド区切り文字を定義するためのものです。

0