如何使用 grep 从文件中循环模式

how to loop over pattern from a file with grep

我正在尝试 grep 文本文件 (list.txt) 中每行一个的一系列模式,以查找目标文件 (file1) 中每个模式有多少匹配项.目标文件如下所示:

$ cat file1

2346 TGCA
2346 TGCA
7721 GTAC
7721 GTAC
7721 CTAC

我需要每个数字模式的计数(2346 和 2271)。

如果您在引号中提供模式列表,我有这个脚本可以使用:

 $ for p in '7721' '2346'; do   printf '%s = ' "$p"; grep -c "$p" file1; done

 7721 = 3
 2346 = 2

我想做的是搜索 list.txt 中的所有模式:

$ cat list.txt

7721
2346
6555
25425
22
125
....
19222

如何转换上面的脚本以查看 list.txt 并搜索每个模式,以及 return 与上面相同的输出(模式 = 计数)例如:

2346 = 2
7721 = 3
....
19222 = 6

试试这个 awk oneliner:

 awk 'NR==FNR{p[[=10=]];next} in p{p[]++}END{for(x in p)print x, p[x]}' list.txt file