awk返回的字段数

时间:2011-04-07 14:04:22

标签: awk

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

a b c d

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

4 个答案:

答案 0 :(得分:52)

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

希望这会有所帮助,并且快乐吵醒

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

FreeBSD上的

awk(1)无法识别--field-separator。请改用-v

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

定义字段分隔符是a portable, POSIX way