- - PR -
grepでand条件、or条件検索したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-16 22:44
grepを用いてある語句を含む行を検索しようとしています。
grep "aaa|bbb" sample.txt とすると結果的にaaaとbbbでor条件のように検索することができました。 パイプは左のコマンドの結果を、右に持っていって、さらに右側でコマンドを実行させるという認識だったのですが、若干私の認識が違うようです。 質問ですが、上記のようにした場合、パイプはどうしてor条件で検索できるのでしょうか? or条件、and条件検索では、どのようにすれば最もスマートな書き方になるのでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2006-05-17 10:14
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29244&forum=10
grepの条件中の"|"はパイプじゃありません。 "|"をパイプと認識するのはシェルです。 | ||||
|
投稿日時: 2006-05-17 12:53
manで調べましたか?
| ||||
|
投稿日時: 2006-05-17 15:36
manでは見ましたが、英語なのでよく分かりませんでした。
>grepの条件中の"|"はパイプじゃありません。 >"|"をパイプと認識するのはシェルです。 質問に書いたコマンドではor条件の記載方法でよいのでしょうか? コマンドをどう解釈すればよいのですか? | ||||
|
投稿日時: 2006-05-17 16:21
or検索は、書かれている「grep "aaa|bbb" sample.txt」で合ってます。なんでそうなるかは、grep のマニュアルを読んでください。英語でも読んでください。英語を読まずにUNIXを使うのは無茶です。 and検索は「grep "aaa.*bbb|bbb.*aaa" sample.txt」とか「grep "aaa" sample.txt | grep "bbb"」などです。 | ||||
|
投稿日時: 2006-05-17 17:19
and検索は肯定先読みを使って
^(?=*aa)(?=*bb) でもできます [ メッセージ編集済み 編集者: 明智重蔵 編集日時 2006-05-17 18:19 ] | ||||
|
投稿日時: 2006-05-17 18:31
^ ( ? = * a a ) ( ? = * b b )
grep は古いコマンドなので、最新式の 正規表現が 使えない場合が多い。 sed ・・・ 検索語 grepで使える正規表現 | ||||
|
投稿日時: 2006-05-17 20:39
同感ですが…、調査はされていますでしょうか? 私も英語が苦手なので日本語manが閲覧できるサイトを利用していますが、 下記URLは参照済みでしょうか? http://www.linux.or.jp/JM/index.html 「man on WWW」 or 「全文検索」でお探しのコマンドのman が参照できるかも知れません。 [ メッセージ編集済み 編集者: tmp 編集日時 2006-05-19 09:12 ] |
1