我知道这grep -E 'termA|termB' files
允许我在多个文件中搜索termA OR termB
。我想做的是搜索termA AND termB
。它们不必在同一行,只要这两个术语存在于同一个文件中即可。本质上是一种“在结果中搜索”功能。
我知道我可以将一个 grep 的结果传送到另一个 grep 中,但是在处理许多文件时这似乎很慢。
grep -l "termA" * | xargs grep -l "termB" | xargs grep -E -H -n --color "termA|termB"
希望上述方法不是实现这一目标的唯一方法。
如果这个可以在 Windows(有 cygwin)和 Linux 上运行就更好了。我不介意安装一个工具来执行此任务。
答案1
您可以使用 awk 来实现这一点。只需为您要查找的每个匹配项设置一个标志,然后检查是否已设置所有标志。