如何通过grep在不同的行中查找包含这两个关键字的文件?

如何通过grep在不同的行中查找包含这两个关键字的文件?,grep,sh,Grep,Sh,Linux内核sourceconfig/*中有很多文件,我想找到一个与我的主板类似的文件 所以我试着: egrep -l -e key1 -e key2 config/* Sample config/file1: This is key1 This is key2 Sample config/file2: This is key1 Sample config/file3: This is key2 但结果是key1或key2文件列表。 我想要包含key1和ke

Linux内核source
config/*
中有很多文件,我想找到一个与我的主板类似的文件

所以我试着:

egrep -l -e key1 -e key2 config/*

Sample config/file1:
    This is key1
    This is key2
Sample config/file2:
    This is key1
Sample config/file3:
    This is key2
但结果是
key1
key2
文件列表。 我想要包含
key1
key2
或者是否有其他简单的unix shell可以生成结果


在前面的示例中,我只想列出'file1'。

'grep-E'pat1.*pat2.*pat2.*pat1'是我常用的咒语。axiom的解决方案仅在这些模式按给定顺序出现时有效,“|”正则表达式运算符允许搜索以任何顺序查找模式。

我的建议:

( grep -l key1 config/* ; grep -l key2 config/* ) |sort |uniq -c |grep '^ *2\>' |awk '{print $2}'
第一个
grep
打印包含
key1
的所有文件,第二个
grep
打印包含
key2
的所有文件,
然后
排序
uniq
和第三个
grep
过滤两次列出的文件,即包含两个键。

也许此链接可以帮助您: