• ベストアンサー

grepでfooかbarを含む行を表示するにはどうすればよいですか。

grepでfooかbarを含む行を表示するにはどうすればよいですか。 イメージ的には、 command | grep 'foo|bar' のようなことをしたいのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

一行で書かないと駄目ですか? grepのfooの結果をリダイレクトして、それにgrep barの結果を追加(>>)した後vi等のエディッタで ゆっくり検索しても結果は同じような・・・。 検索するとegrepとか、-eオプションが有りますね。 http://www.rep1.co.jp/staff/200vcxg/217rav/grep_andor_lcd_-linux_command.htm http://araistudy.g.hatena.ne.jp/iwaseki/20061027/p1 まあ、どれでも同じ様な事は出来そうです。

zyousuke
質問者

お礼

こんばんは。 ご紹介いただいたページを見てみると、何とおしいことに! command | grep 'foo|bar' ではなく、 command | grep 'foo\|bar' のように|をクォートしてやる必要があったのですね!! 私としたことが、早とちりな質問をしてしまいました。 それにしても思ったページを検索するのが上手ですね。 私は「grep 正規表現 論理和」のようなキーワードで検索したのですが、 なかなか思ったページにたどり着けず、ついには質問してしまったという訳です^^;

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.3

正規表現には、grep の解釈する "(狭義の)正規表現"と、egrep の解釈する "拡張正規表現"があります。これらでは、"グルーピング"の () や "または"の | を、\( \) \| と書くか、( ) | と書くかの違いがあります。 ウエブ上では、各種プログラミング言語の正規表現の説明が多いのですが、これらは 拡張正規表現 ないし さらにそれの拡張版となっているので、「"まはた" は | と書く」と書かれていることが多いです。 お調べになったように、grep の場合は、\| と書き、egrep や grep -E の場合は | と書きます。

zyousuke
質問者

お礼

こんばんは、 egrepやgrep -Eの場合は|をクォートする必要がないのですね。 egrepはgrepのマニュアルページに一緒に出てきますが、使ったことはありませんでした;;

回答No.2

ANo.1 さんが既に書き込まれておりますが、 grepの"-e"オプションにて複数指定ができます。 command | grep -e foo -e bar これでOKです。

zyousuke
質問者

お礼

こんばんは -eオプションでも複数のパターンを指定できるのですね! でも私的には、正規表現を使った方が、 よりカッコいいイメージがあるので、正規表現を使うことにします^^

関連するQ&A