如何使用 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
我正在尝试 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