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)の2つの星を含む結果を正しく返し、2つの星がお互いを見ていない映画も検索するため、私には適していません。の結果。例えば、「カジノ」にはデニロが出演したが、パシノは出演しなかった。 「Carlito's Way」にはデニロではなくパシノだけが出演しました。

  • PacinoとDe Niroが共演した映画の結果のみを表示し、他のすべての結果を無視するようにgrepを取得するにはどうすればよいですか?

ありがとう、デイブ

ベストアンサー1

grepこれは、次のパイプラインを介して実行できますgrep(もちろん、より効率的な方法があると確信しています)。

grep 'de niro' testimdb | grep 'pacino'

以下では、拡張正規表現を使用してくださいgrep

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

おすすめ記事