有没有办法让awk返回满足字段分隔符条件的字段数?例如,文件包含:
awk
a b c d
因此,awk -F=' ' | <something>应该返回4。
awk -F=' ' | <something>
pgky5nke1#
变量NF被设置为输入记录中的字段总数,因此:
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
lokaqttq2#
NF给出给定记录的字段数:
[]$ echo "a b c d" | gawk '{print NF}' 4
ippsafx73#
如果您想知道多行内容中所有字段的数量,可以运行:
X | awk '{print NF}' | sort -n | uniq
X是在标准输出中输出内容的命令:cat、echo等。示例:带有文件.txt:
X
cat
echo
a b b c c d e t a e u
命令cat file.txt | awk '{print NF}' | sort -n | uniq将打印:
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将打印:
cat file2.txt | awk '{print NF}' | sort -n | uniq
2
o3imoua44#
FreeBSD上的awk(1)无法识别--field-separator,请改用-v:
--field-separator
-v
echo "a b c d" | awk -v FS=" " "{ print NF }"
字段分隔符的定义是a portable, POSIX way。
4条答案
按热度按时间pgky5nke1#
变量
NF
被设置为输入记录中的字段总数,因此:将显示
但是,请注意:
将显示:
希望这能有所帮助,快乐的awking
lokaqttq2#
NF
给出给定记录的字段数:ippsafx73#
如果您想知道多行内容中所有字段的数量,可以运行:
X
是在标准输出中输出内容的命令:cat
、echo
等。示例:带有文件.txt:
命令
cat file.txt | awk '{print NF}' | sort -n | uniq
将打印:并使用文件2.txt:
命令
cat file2.txt | awk '{print NF}' | sort -n | uniq
将打印:o3imoua44#
FreeBSD上的awk(1)无法识别
--field-separator
,请改用-v
:字段分隔符的定义是a portable, POSIX way。