【发布时间】:2011-07-31 17:51:13
【问题描述】:
有没有办法让 awk 返回满足字段分隔符条件的字段数?比如说,我的文件包含
a b c d
所以,awk --field-separator=" " | <something> 应该返回 4
【问题讨论】:
标签: awk
有没有办法让 awk 返回满足字段分隔符条件的字段数?比如说,我的文件包含
a b c d
所以,awk --field-separator=" " | <something> 应该返回 4
【问题讨论】:
标签: awk
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
希望这会有所帮助,祝你睡得开心
【讨论】:
echo "a b c d" | awk {'print NF'}就足够了..
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
【讨论】:
FreeBSD 上的awk(1) 无法识别--field-separator。请改用-v:
echo "a b c d" | awk -v FS=" " "{ print NF }"
定义字段分隔符是a portable, POSIX way。
【讨论】: