1. ホーム
  2. grep

[解決済み] 同じ行に存在する2つの単語をgrepする方法は?重複

2022-05-25 22:26:14

質問

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

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

最初のパイプコマンドの後に引っかかるだけです。

なぜですか?

どのように解決するのか?

なぜ -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 からの入力を期待します。 stdin からの入力を期待し、それが原因でハングアップしているようです。あなたは Ctrl + D でEOF(end-of-file)を送り、終了させる。