![使用 grep 排除与特定查询不匹配的结果](https://linux22.com/image/131434/%E4%BD%BF%E7%94%A8%20grep%20%E6%8E%92%E9%99%A4%E4%B8%8E%E7%89%B9%E5%AE%9A%E6%9F%A5%E8%AF%A2%E4%B8%8D%E5%8C%B9%E9%85%8D%E7%9A%84%E7%BB%93%E6%9E%9C.png)
我创建了一个包含以下内容的文件(testimdb):
film: heat. year: 1995. director: michael mann. actors: al pacino, robert de niro, val kilmer film: the godfather part ii. year: 1974. director: francis coppola. actors: al pacino, robert de niro, diane keaton, robert duvall film: casino. year: 1995. director: martin scorsese. actors: robert de niro, sharon stone, joe pesci film: carlito's way. year: 1993. director: brian de palma. actors: al pacino, sean penn
我可以 grep 查找帕西诺和德尼罗主演的所有电影(grep 'pacino\|de niro' /root/testimdb)。这会导致显示包含他们的名字的所有电影。
然而,我想排除任何不是他们俩主演的电影——仅在同一部电影中一起主演。因此,上面的 grep 搜索示例对我不起作用,因为它正确返回包含同一部电影中的两位明星的结果(《热火》、《教父 2》),并且它还检索他们不盯着对方的电影的结果。例如,《赌场》由德尼罗主演,但帕西诺没有主演;《卡利托之路》只有帕西诺主演,而不是德尼罗主演。
如何让 grep 只显示帕西诺和德尼罗共同主演的电影的结果,而忽略所有其他结果?
谢谢,戴夫
答案1
grep
这可以通过如下管道来完成grep
(尽管我确信有更有效的方法):
grep 'de niro' testimdb | grep 'pacino'
在以下位置使用扩展正则表达式grep
:
grep -E 'de niro.*pacino|pacino.*de niro' testimdb