- ベストアンサー
grepの使い方(もしくは~)
恐れ入ります。 grepで検索してみたのですが、よくわかりませんでした。 aaa もしくは bbb を含む という検索はどのように書いたらいいのでしょうか
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
普通の grep では出来ないので、egrep を使ってください。拡張子 .aaa と .bbb なら find . -type f -print | egrep '\.aaa$|\.bbb$' になります。
その他の回答 (3)
- secretd
- ベストアンサー率39% (50/126)
Unixのコマンドで分からないことがあれば,まずmanを引くようにしましょう.大体全部かいてますよ. 私はcygwinのgrepのmanを見てみたのですが,それによると, cygwinのgrepはデフォルトで"basic regular expression(基本正規表現?)"とやらを使います. で,正規表現の部分を読むと,基本正規表現では「?,+,{,|,(,)」のメタキャラクタはその効果を失うので,前にバックスラッシュをつけて使え,と書いてありました. そこで, find . | "\.h\|\.o" とやると,拡張子が「.h」または「.o」のファイルのみを出力させることができました. Solarisは使ったことがないので分かりませんが,おそらく同様のことが書いてあるのでは. また,ご希望の「何ファイルあるか?」というのも,grepにオプションをつけることで出力させることができます.その辺りも含めてmanをよく読んでみてはいいのではないでしょうか.
お礼
なかなか難しいですね。 ありがとうございました
- chie65536
- ベストアンサー率41% (2512/6032)
grep 'aaa|bbb' file ※「grep 正規表現」でネット検索してみましょう。
補足
なぜかだめでした。 もう少し詳しく言うと、 find . |grep として、2種類の拡張子のものが何個あるか数えたいです。 教えてもらった方法を使ったら、どちらも引っかからなくなってしまいました・・・
- 530529
- ベストアンサー率16% (86/521)
fgrepを使ってよければ 例えば、aaaとbbbを各1行づつに記入してfooというファイル名にします。 ”コマンド” > fgrep -f foo とやられてみてはいかがでしょうか ? 詳細は、man fgrepでチェックしてみて下さい。
補足
すいません。 ファイルを作る、ということはしたくないのです。
お礼
ばっちりでした!!! ありがとうございます!!