如何通过命令查找文件中重复单词的数量?

如何通过命令查找文件中重复单词的数量?

如何查找文件中句子开头重复单词的数量?例如

abc bdbdndnvd hddh hcjdhjc  
dgdgd ghcdggcd abc hjdhcj 
abc ghdsgcgdc cdghcgd dhgch 
hshhj hcdhchd hdjchjd 

输出:

abc 

只对整个文件中开头的重复单词感兴趣。如果该单词在其他任何地方都不应计算在内。即在上面的例子中abc重复了两次。有人能建议我如何使用命令做到这一点吗?我正在使用 Ubuntu 16.04。

答案1

使用cutuniq

cut -d" " -f1 | sort | uniq -d

cut命令提取每行的第一个单词,并sort结合uniq -d仅打印重复的单词。

答案2

使用awk

awk '{a[$1]++} END {for (i in a) if (a[i] > 1) print i}'

这只是计算行中第一个单词 ( ) 出现的次数,$1并将其保存在数组中。然后,循环遍历迄今为止看到的所有数组元素,并打印多次出现的元素。

当然,我已经陷入了循环遍历数组的窠臼END。steeldriver 指出我不需要:

awk 'a[$1]++ == 1' file

相关内容