• ベストアンサー

grepの使い方(もしくは~)

恐れ入ります。 grepで検索してみたのですが、よくわかりませんでした。 aaa もしくは bbb を含む という検索はどのように書いたらいいのでしょうか

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

  • ベストアンサー
回答No.4

普通の grep では出来ないので、egrep を使ってください。拡張子 .aaa と .bbb なら find . -type f -print | egrep '\.aaa$|\.bbb$' になります。

azicyan
質問者

お礼

ばっちりでした!!! ありがとうございます!!

その他の回答 (3)

  • secretd
  • ベストアンサー率39% (50/126)
回答No.3

Unixのコマンドで分からないことがあれば,まずmanを引くようにしましょう.大体全部かいてますよ. 私はcygwinのgrepのmanを見てみたのですが,それによると, cygwinのgrepはデフォルトで"basic regular expression(基本正規表現?)"とやらを使います. で,正規表現の部分を読むと,基本正規表現では「?,+,{,|,(,)」のメタキャラクタはその効果を失うので,前にバックスラッシュをつけて使え,と書いてありました. そこで, find . | "\.h\|\.o" とやると,拡張子が「.h」または「.o」のファイルのみを出力させることができました. Solarisは使ったことがないので分かりませんが,おそらく同様のことが書いてあるのでは. また,ご希望の「何ファイルあるか?」というのも,grepにオプションをつけることで出力させることができます.その辺りも含めてmanをよく読んでみてはいいのではないでしょうか.

azicyan
質問者

お礼

なかなか難しいですね。 ありがとうございました

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

grep 'aaa|bbb' file ※「grep 正規表現」でネット検索してみましょう。

azicyan
質問者

補足

なぜかだめでした。 もう少し詳しく言うと、 find . |grep として、2種類の拡張子のものが何個あるか数えたいです。 教えてもらった方法を使ったら、どちらも引っかからなくなってしまいました・・・

  • 530529
  • ベストアンサー率16% (86/521)
回答No.1

fgrepを使ってよければ 例えば、aaaとbbbを各1行づつに記入してfooというファイル名にします。 ”コマンド” > fgrep -f foo とやられてみてはいかがでしょうか ? 詳細は、man fgrepでチェックしてみて下さい。

azicyan
質問者

補足

すいません。 ファイルを作る、ということはしたくないのです。

関連するQ&A

専門家に質問してみよう