how to loop over pattern from a file with grep
本问题已经有最佳答案,请猛点这里访问。
我试图对文本文件(list.txt)中的一系列模式进行grep,以找出目标文件(file1)中每个模式有多少匹配项。目标文件如下所示:
1 2 3 4 5 6 7 | $ cat file1 2346 TGCA 2346 TGCA 7721 GTAC 7721 GTAC 7721 CTAC |
我需要每个数字模式的计数(2346和2271)。
如果您用引号提供模式列表,我将使用此脚本:
1 2 3 4 | $ for p in '7721' '2346'; do printf '%s = '"$p"; grep -c"$p" file1; done 7721 = 3 2346 = 2 |
我要做的是在list.txt中搜索所有模式:
1 2 3 4 5 6 7 8 9 10 | $ cat list.txt 7721 2346 6555 25425 22 125 .... 19222 |
如何将上面的脚本转换为在list.txt中查找并搜索每个模式,并返回与上面相同的输出(pattern=count),例如:
1 2 3 4 | 2346 = 2 7721 = 3 .... 19222 = 6 |
试试这个awk-oneliner:
1 | awk 'NR==FNR{p[$0];next}$1 in p{p[$1]++}END{for(x in p)print x, p[x]}' list.txt file |