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

标签 grep sh

Linux内核源码中有很多文件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

但结果是 key1key2 文件列表。 我想要包含 key1 key2 的结果 或者有其他简单的unix shell可以生成结果吗?

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

最佳答案

我的建议:

( grep -l key1 config/* ; grep -l key2 config/* ) |sort |uniq -c |grep '^ *2\>' |awk '{print $2}'

第一个 grep 打印包含 key1 的所有文件,第二个 grep 打印包含 key2 的所有文件, 然后sortuniq 和第三个grep 过滤器列出两次的文件,即包含两个键。

关于grep - 如何通过grep查找不同行中包含两个关键字的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13642549/

相关文章:

linux - 使用 grep 获取行号

linux - grep 包含特定单词和不包含这些单词的文件

linux - 匹配电话号码的 grep 表达式

bash - 从文件中捕捉序列的开始

grep - 使用 grep 查找所有带重音的单词(变音符号)?

bash - 当 POSIX 规范说有必要避免歧义时,它是什么意思?

shell - 可以在 shell 脚本中对变量进行 urlencode 吗?

linux - 在 bash 中使用单引号仍然给出 "event not found"

linux - 从没有密码的shell脚本SSH

json - 如何使用 jq 从带有空格的 json 对象中提取值