行に 2 つの入力単語が含まれる行を grep するにはどうすればよいでしょうか。両方の単語が含まれる行を探しているのですが、どうすればよいですか。次のようにパイプしてみました。
grep -c "word1" | grep -r "word2" logs
最初のパイプ コマンドの後に停止してしまいます。
なぜ?
ベストアンサー1
なぜ をパスするのですか-c
? 一致した数だけが表示されます。同様に、 を使用する理由はありません-r
。 を読むことをお勧めしますman grep
。
同じ行に存在する 2 つの単語を grep で検索するには、次のようにします。
grep "word1" FILE | grep "word2"
grep "word1" FILE
FILE から word1 を含むすべての行を印刷し、次にgrep "word2"
word2 を含む行を印刷します。したがって、パイプを使用してこれらを組み合わせると、word1 と word2 の両方を含む行が表示されます。
同じ行に 2 つの単語が含まれる行の数を数えるだけの場合は、次のようにします。
grep "word1" FILE | grep -c "word2"
また、なぜスタックしてしまうのかという質問への回答: ではgrep -c "word1"
、ファイルを指定していません。したがって、grep
は からの入力を期待しており、これがハングしているように見える理由です。 +を押してEOF (ファイルの終わり) を送信し、終了することがstdin
できます。CtrlD