仅使用AWK统计字段数量,不使用uniq等其他命令

仅使用AWK统计字段数量,不使用uniq等其他命令

样本文件

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

相关内容