如何通过grep在不同的行中查找包含这两个关键字的文件?
Linux内核source如何通过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
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
过滤两次列出的文件,即包含两个键。也许此链接可以帮助您: