如何使用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 扫描整个目录来在文件内容中查找具有特定字符串的文件 [重复]

如何从 Qt 中的资源文件中重复/循环声音?

如何使用grep查找多行的模式?

如何从循环中遍历枚举中的条目[重复]

使用 grep 从本地文件中的 HTML 标记中获取文本 [重复]

如何在模式后grep一个字符串?