同じ行に存在する 2 つの単語を grep で検索する方法は? [重複] 質問する

同じ行に存在する 2 つの単語を grep で検索する方法は? [重複] 質問する

行に 2 つの入力単語が含まれる行を grep するにはどうすればよいでしょうか。両方の単語が含まれる行を探しているのですが、どうすればよいですか。次のようにパイプしてみました。

grep -c "word1" | grep -r "word2" logs

最初のパイプ コマンドの後に停止してしまいます。

なぜ?

ベストアンサー1

なぜ をパスするのですか-c? 一致した数だけが表示されます。同様に、 を使用する理由はありません-r。 を読むことをお勧めしますman grep

同じ行に存在する 2 つの単語を grep で検索するには、次のようにします。

grep "word1" FILE | grep "word2"

grep "word1" FILEFILE から word1 を含むすべての行を印刷し、次にgrep "word2"word2 を含む行を印刷します。したがって、パイプを使用してこれらを組み合わせると、word1 と word2 の両方を含む行が表示されます。

同じ行に 2 つの単語が含まれる行の数を数えるだけの場合は、次のようにします。

grep "word1" FILE | grep -c "word2"

また、なぜスタックしてしまうのかという質問への回答: ではgrep -c "word1"、ファイルを指定していません。したがって、grepは からの入力を期待しており、これがハングしているように見える理由です。 +を押してEOF (ファイルの終わり) を送信し、終了することがstdinできます。CtrlD

おすすめ記事