it-swarm-ja.com

一度に複数のパターンをgrepする方法は?

そこのパターンに一致するすべての行を取得したい:

  • 何か
  • どこか
  • どこか

/data/rawlog.txtから

このコマンドを試しましたが、失敗しました:

grep -e "[something|someplace|somewhere]" /data/rawlog.txt

誰が何が悪いのか知っていますか?

2
ariefbayu

まず、角かっこは必要ありません。次に、拡張正規表現を使用するか、パイプをエスケープする必要があります。これの1つが機能するはずです:

egrep -e "something|someplace|somewhere" /data/rawlog.txt
grep -e "something\|someplace\|somewhere" /data/rawlog.txt

フォークの外に何かを配置したい場合は、それをグループ化することを忘れないでください。たとえば、これらのパターンを行の終わりでのみ発生させる場合は、次のようにします。

egrep -e "(something|someplace|somewhere)$" /data/rawlog.txt

括弧にもegrepまたはエスケープが必要であることに注意してください。

7
petersohn