• ベストアンサー

Mac ターミナルのコマンド、パイプの使い方

Mac OS10.6.8 ターミナル2.1.2 を使用しています。 パイプの使い方で困っています。 command1 | command2 command1は標準出力に複数行の文字列を出力します。(例えばcd, ls) command2でパイプを通してcommand1の出力した文字列からワイルドカードに一致する文字列を含む行を標準出力に表示させたいのですが、そのようなコマンドが分からず困っています。 最近このような使い方をしたいことが多々あり、毎回目視で探すかファイルに出力し、 エディタで検索しています。 基礎的なことかとは思いますがよろしくお願いいたします。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

> command1 | grep '*ruby*' この目的なら*は不要です。grepは、パターンが含まれる行を出力するので、前後になにかがあっても同じだからです。 逆に、この単語だけの行、となると、別の書き方で対応する必要があります。たとえば '^ruby$' など。 詳細は、man grep として表示されるマニュアルを読んだり、「grep 正規表現」で検索したりしてください。

unmarko
質問者

お礼

ありがとうございます。 grepの使い方をもう少し勉強する必要がありそうです。 検索ワード助かりました。

その他の回答 (2)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

grepの使い方 http://www.rsch.tuis.ac.jp/~mizutani/online/grep/index.html なお、grep "*hoge*"ではパターンマッチしません。 grep ".*hoge.*"だとマッチします。

unmarko
質問者

お礼

ありがとうございました。 なるほど、.*で任意の文字列なんですね。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

「ワイルドカード」の部分が「正規表現」でいいのなら、grepコマンドでいいと思います。

unmarko
質問者

お礼

やってみたら出来ました! ありがとうございます。 command1 | grep 'ruby' で''内の文字列を含む行を表示してくれました。 因みに、 grepの正規表現の使い方なのですが、 *で任意の文字列と説明されているので下記のように command1 | grep "*ruby*" command1 | grep '*ruby*' としたのですが、結果が表示されませんでした。 grepの正規表現の使い方について、参考になるURL等ありましたら教えて頂きたいです。

関連するQ&A