有没有办法让awk返回符合字段分隔符条件的字段数?比如说,我的文件包含
a b c d
所以,awk --field-separator=" " | <something>
应该返回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
输出标准输出内容的命令: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
答案 3 :(得分:0)
awk(1)无法识别--field-separator
。请改用-v
:
echo "a b c d" | awk -v FS=" " "{ print NF }"
定义字段分隔符是a portable, POSIX way。