grep을 사용하여 특정 쿼리와 일치하지 않는 결과 제외

grep을 사용하여 특정 쿼리와 일치하지 않는 결과 제외
  • 다음 내용으로 파일(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
    
  • Pacino와 De Niro가 주연을 맡은 모든 영화를 grep할 수 있습니다(grep 'pacino\|de niro' /root/testimdb). 이렇게 하면 이름이 포함된 모든 영화가 표시됩니다.

  • 그러나 두 사람이 모두 출연하지 않는 영화, 즉 같은 영화에 함께 출연하는 영화는 제외하고 싶습니다. 따라서 위의 grep 검색 예는 동일한 영화(The Heat, The Godfather Part II)의 두 스타가 포함된 결과를 올바르게 반환하고 두 스타가 서로를 쳐다보지 않는 영화도 검색하기 때문에 나에게 적합하지 않습니다. 의 결과. 예를 들어, "Casino"에는 De Niro가 출연했지만 Pacino는 출연하지 않았습니다. "Carlito's Way"에는 De Niro가 아닌 Pacino만 출연했습니다.

  • Pacino와 De Niro가 공동 주연을 맡은 영화에 대한 결과만 표시하고 다른 모든 결과는 무시하도록 grep을 얻으려면 어떻게 해야 합니까?

고마워요, 데이브

답변1

grep이 작업은 다음과 같은 파이프라인을 통해 수행할 수 있습니다 grep(물론 더 효율적인 방법이 있다고 확신합니다).

grep 'de niro' testimdb | grep 'pacino'

다음에서 확장 정규식을 사용하세요 grep.

grep -E 'de niro.*pacino|pacino.*de niro' testimdb

관련 정보