如何使用grep从文件中循环模式[重复]
Posted
技术标签:
【中文标题】如何使用grep从文件中循环模式[重复]【英文标题】:how to loop over pattern from a file with grep [duplicate] 【发布时间】:2015-06-12 05:04:56 【问题描述】:我正在尝试对文本文件 (list.txt) 中的每行一个模式进行 grep,以查找目标文件 (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 中查找并搜索每个模式,并返回与上面相同的输出 (pattern = count) 例如:
2346 = 2
7721 = 3
....
19222 = 6
【问题讨论】:
7721
行之一与其他两个行不同是否重要?
我看不出这是那个问题的重复?有很多相同形式的问题可以合理地重复但不是那个。
没关系。事实上,ID 后面的字符串可能会在许多匹配项中有所不同。
【参考方案1】:
试试这个 awk oneliner:
awk 'NR==FNRp[$0];next$1 in pp[$1]++ENDfor(x in p)print x, p[x]' list.txt file
【讨论】:
以上是关于如何使用grep从文件中循环模式[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何通过使用 grep 扫描整个目录来在文件内容中查找具有特定字符串的文件 [重复]