样本文件
wolf@linux:~$ awk // file.txt
a b
b c
c d
wolf@linux:~$
此示例中有 2 个字段和 3 条记录。
wolf@linux:~$ awk '{print NF}' file.txt
2
2
2
wolf@linux:~$
要获得唯一的编号,uniq
请使用命令。
wolf@linux:~$ awk '{print NF}' file.txt | uniq
2
wolf@linux:~$
在这个例子中awk
单独使用 without 可以统计字段的数量吗?uniq
所需输出
wolf@linux:~$ awk <???> file.txt
2
wolf@linux:~$
答案1
有点不清楚你想要什么(因为uniq
只会删除邻近的重复项)但是假设您要打印记录中的所有唯一字段计数不考虑相邻性你可以用
awk '!seen[NF]++ {print NF}' file.txt
答案2
BEGIN 规则仅在读取第一个输入记录之前执行一次。
同样,END 规则仅在读取所有输入后执行一次。
https://www.gnu.org/software/gawk/manual/html_node/Using-BEGIN_002fEND.html
例如1
$ awk 'END {print NF}' file.txt
2
例如2
$ awk 'END {print NF " NF"}' file.txt
2 NF
例如3
$ awk 'END {print NF,NR}' file.txt
2 3
例如4
$ awk 'END {print NF " NF, " NR " NR"}' file.txt
2 NF, 3 NR