2011-04-07 65 views
15

有没有办法让awk返回符合字段分隔符条件的字段数?说,例如,我的文件包含awk返回的字段数

a b c d 

所以,awk --field-separator=" " | <something>应该返回4

回答

39

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

希望这有助于和快乐awking

4

NF给出给定记录的字段数:

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

如果你想知道多行内容的字段集合所有的数字,你可以运行:

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