当我从另一个文件grep时,如何返回文件中模式的出现次数?

时间:2015-11-30 06:14:19

标签: awk sed

我有两个文件。文件1和文件2 现在我需要grep所有与文件2中的文件1匹配的模式,这可以通过grep -f来完成。

但我需要知道使用awk或sed在file2中发生文件1的每个模式的次数

例如;

flie 1

ABC 高清 GHI JKL MNO PQR STU WXY

文件2;

感谢您关注 abc 我们的搜索和

广告服务(“服务 def ")!

使用我们的服务即表示您同意这些 abc

条款(“AdSense条款”),AdSense计划政策和 stu Google

品牌推广指南(统称为“协议”) abc

如果发生冲突,就此类冲突而言, def AdSense条款

将优先于协议的任何其他条款 请仔细阅读本协议。 如协议中所使用的,“您”或“出版商”是指 使用服务的个人或实体(和/或任何 个人,实体或继承实体,代理或 代表您行事的网络),“我们”,“我们”或“Google” 意味着谷歌公司,“派对”意味着你和谷歌。

现在代码应该返回

abc发现了3次 def发现2次 stu发现了一次

grep -f file1 file2为我们提供了匹配的总模式 grep -f file1 file2 | wc -l给出了匹配的总数..

1 个答案:

答案 0 :(得分:0)

awk 'FNR==NR{pattern[ $0]=0};FNR!=NR && ($0 in pattern) {pattern[ $0]++};END{for( pat in pattern) if(pattern[pat]>0) print pattern[pat] ":" pat }' file1 file2

假设pattern是两个文件中的整个字符串。