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