• ベストアンサー

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

  • grep コマンドでディレクトリ検索

    grep コマンドでディレクトリ検索 tmp/bbb tmp/bbb.cc というディレクトリがある時 ls | grep -w "bbb" でtmp/bbbだけ取りたいけど bbb.ccまで取ってしまうんで困ってます。 どうやったらtmp/bbbだけ取れますか? まったく一致のbbbを検索したいです。

  • シェル関数引数のスペース文字列をgrepに

    下記のシェル関数 arg_space() 内で、grepを使いたいのですが。 'aaa bbb' などのスペースを含む文字列を引数として渡すとスペース後の文字列がファイル名と 認識されてしまいます。 -- arg_space.sh -- #!/bin/bash CHK_STR='aaa bbb' FILE_NAME='data/aaa.txt' function arg_space() { return `grep -c $1 $2` } arg_space $CHK_STR $FILE_NAME if [ $? -ge 1 ]; then echo 'Match !!' else echo 'No match.' fi exit 0 ------------------ ]# ./arg_space.sh grep: bbb: No such file or directory Match !! スペース文字を、grep に区切り文字として認識させないようにする 方法を教えて 頂けないでしょうか。 -- data/aaa.txt -- aaa bbb ccc ddd ---------------

  • find grep につきまして

    いつもお世話になっております。 自サイトの、http://hogehoge.com/aaa/zzz.php?uid=xxx というリンクをfindとgrepを使って、 再帰的に検索したいのですが、 サンプルをおしえていただけませんでしょうか。 お手数をお掛けしますが、どうぞよろしく願いいたします。

  • ファイルから検索条件を読み込んでGREPを実行したい

    INPUTファイルを以下のように作成します。 >input.txt aaa bbb ccc ・ ・ ・ 特定のディレクトリの複数ファイルに対して grepを順にaaa,bbb,ccc・・・ というようにinput.txtから読み込んで実行し、結果をそれぞれaaa.txt,bbb.txt,ccc.txt・・・ へ出力したいのですが、方法がわからなくて困っています。 どなたかご教授お願いいたします。

    • ベストアンサー
    • Perl
  • grepについて

    Freebsdにおいてgrepというコマンドがあると思いますが、このgrepで特定の階層にある特定のファイルを探すことはできるのでしょうか? あるファイルの中に存在する、特定の文字などを検索するやり方は分かるのですがファイル名を検索しようとしても、やり方が分からずできません。 それとも、もともとgrepコマンドは、あるファイル内に存在する文字を検索するためのコマンドなのでしょうか?? その辺りも、よく分かりません。 他に、grepはこういう時に便利!!みたいな例があれば教えてくださいませ。 ご回答の程、よろしくお願い致します。

  • perl の grepで 全角カタカナで検索できません

    perl の以下のソースで、実行エラーになってしまいます。 grep で全角カタカナで検索できないのです。半角カタカナでは、うまく動きました。 全角文字(たとえば’中華’)でも正しく「中華料理」と出力されます。 ’ラーメン’で検索したら、’ラーメン店’と出力されるのが正しいと思うのですが、 なぜ動かないんでしょ? ↓ソース #!/usr/bin/perl @aaa = ("ラーメン店","カレーハウス","中華料理"); @aaa = grep /ラーメン/ , @aaa; print "Content-type: text/html\n\n"; print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n"; print <<"HTML"; @aaa HTML exit;

  • grep.exe と同じ機能をWindows上で実現する方法はありますか?(フリーソフト?)

    私は、かつて、まだ Windows3.1 さえもこの世に普及してない時代に、DOSコマンドの“grep.exe”コマンドを頻繁に使用していました。 例えば    grep AAA BBB > CCC  (AAA と BBB の、どっちがファイル名でどっちが文字列かは忘れました) という感じで、テキストファイル中で、特定の文字列が含まれている行を「行単位」で抽出して、そうして抽出した行の全てをまとめて他のファイル(CCC)に出力する、といった具合です。 その後10年以上、そのコマンドを使っていないのですが、このたび久しぶりに、その機能を使う必要が生じました。 現在でも、おそらくDOSコマンドプロンプトから手入力で実行できるのでしょうが、出来れば、一般の Windows 用ソフトと同様に、ウィンドウ表示でマウスクリックを使いながら“grep.exe”のようなことが出来れば、と思います。 というわけで、 “grep.exe”コマンドと同等か同等以上のことができる方法、若しくはソフトがありましたら、教えてくださいませ! なお、ソフトの場合は、フリーソフトで、かつ、出来るだけ軽いものを希望します。 なお、OSは Windows XP HE を使用していますが、MSオフィス系ソフトは使っていません。

  • 秀丸エディタでgrepを行うと前に余計なファイル名と数字が付け加えられる

    grepを行うと、文字の前にファイル名.txtと数字行(****)が付け加えられます 例えば、 aaa bbb をgrepで実行すると .txt(2659):aaa .txt(2660):bbb のようにファイル名と数字行が入ってしまいます。 前につけないように、grepを実行するにはどうすればよいのでしょうか?

  • grepの方法について

    下記のようにgrep結果を取り出したいのですが大量にあります。 検索結果を最新の1つのみ取り出したいのですが、何か良い方法はありますでしょうか? # cat abc.log |grep testword 大量です # cat abc.log |grep -c testword 9100

  • grepコマンドについて

    以下のシェルプログラムのout_fileの内容が0バイトファイルになって しまいます。理由について教えて下さい。よろしくお願いします。 while read param do grep ${param} in_file > out_file done < "search_file" ここでsearch_fileは -e "bbb" -e "ddd" in_fileは aaa bbb ccc ddd eee です。 因みにsearch_fileを -e bbb -e ddd とすると out_fileは期待通り、 bbb ddd となります。