shell awk返回的字段数

m0rkklqb  于 2023-03-19  发布在  Shell
关注(0)|答案(4)|浏览(130)

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

a b c d

因此,awk -F=' ' | <something>应该返回4。

pgky5nke

pgky5nke1#

变量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

lokaqttq

lokaqttq2#

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

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

ippsafx73#

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

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

X是在标准输出中输出内容的命令:catecho等。示例:
带有文件.txt:

a b
b c
c d
e t a
e u

命令cat file.txt | awk '{print NF}' | sort -n | uniq将打印:

2
3

并使用文件2.txt:

a b
b c
c d
e u

命令cat file2.txt | awk '{print NF}' | sort -n | uniq将打印:

2
o3imoua4

o3imoua44#

FreeBSD上的awk(1)无法识别--field-separator,请改用-v

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

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

相关问题