计算单词列表中每个单词出现在文件中的次数?

Vil*_*age 7 bash grep

我有一个文件,list.txt其中包含一个单词列表.我想检查每个单词出现在另一个文件中的次数file1.txt,然后输出结果.所有数字的简单输出就足够了,因为我可以手动将它们添加到list.txt电子表格程序中,但如果脚本在每行的末尾添加数字list.txt,那就更好了,例如:

bear 3
fish 15
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它不起作用:

cat list.txt | grep -c file1.txt
Run Code Online (Sandbox Code Playgroud)

Tod*_*obs 9

您可以在循环中执行此操作,该循环一次从单词列表文件读取单个单词,然后计算数据文件中的实例.例如:

while read; do
    echo -n "$REPLY "
    fgrep -ow "$REPLY" data.txt | wc -l
done < <(sort -u word_list.txt)
Run Code Online (Sandbox Code Playgroud)

"秘密酱"包括:

  1. 使用隐式REPLY变量;
  2. 使用进程替换来从单词列表文件中收集单词; 和
  3. 确保您在数据文件中搜索整个单词.

  • 这将计算匹配行的数量,而不是实际出现次数(如果一行上有多个匹配,则只计为一个).从理论上讲,`fgrep -o -c`应该可以解决这个问题,但是在最近的GNU`coreutils`版本中,它无法正常工作. (3认同)