使用 awk 计算文本中特定单词的实例

使用 awk 计算文本中特定单词的实例

words_of_interest.txt如果我有一个每行一个单词的文件,是否有一种方法可以使用(或其他一些 *nix 工具)仅使用一次传递awk来获取每个单词在另一个文本文件中出现的次数?my_text.txt

目前我正在grep -c搜索每个单词的文本,但这非常慢,因为文本很大,并且有数百个单词需要搜索。

编辑:提供示例输入和输出:

[words_of_interest.txt]
joe
hi

[my_text.txt]
hi joe
hi jack
nice day today

[output]
joe 1
hi 2

EDIT2:对于那些将此问题标记为重复的人:你指出的问题是关于计数全部单词,而这个是关于仅计算一组特定的预定义单词的实例。

答案1

对于涉及固定字符串搜索和 中的空格分隔单词的简单场景my_text.txt,GNUawk可能会起作用,尽管输出顺序可能与words_of_interest.txt

awk 'NR == FNR{a[$0]; next}; $0 in a{b[$0]++}; 
    END{for (k in b) print k, b[k]}' words_of_interest.txt RS='[[:space:]]+' my_text.txt
hi 2
joe 1

相关内容