- PR -

grepでand条件、or条件検索したい

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/05/16
投稿数: 2
投稿日時: 2006-05-16 22:44
grepを用いてある語句を含む行を検索しようとしています。
grep "aaa|bbb" sample.txt とすると結果的にaaaとbbbでor条件のように検索することができました。
パイプは左のコマンドの結果を、右に持っていって、さらに右側でコマンドを実行させるという認識だったのですが、若干私の認識が違うようです。

質問ですが、上記のようにした場合、パイプはどうしてor条件で検索できるのでしょうか?
or条件、and条件検索では、どのようにすれば最もスマートな書き方になるのでしょうか?
よろしくお願いします。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-05-17 10:14
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29244&forum=10

grepの条件中の"|"はパイプじゃありません。
"|"をパイプと認識するのはシェルです。
mryoshio
会議室デビュー日: 2005/04/20
投稿数: 2
投稿日時: 2006-05-17 12:53
manで調べましたか?
未記入
会議室デビュー日: 2006/05/16
投稿数: 2
投稿日時: 2006-05-17 15:36
manでは見ましたが、英語なのでよく分かりませんでした。


>grepの条件中の"|"はパイプじゃありません。
>"|"をパイプと認識するのはシェルです。

質問に書いたコマンドではor条件の記載方法でよいのでしょうか?
コマンドをどう解釈すればよいのですか?
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2006-05-17 16:21
引用:

質問に書いたコマンドではor条件の記載方法でよいのでしょうか?
コマンドをどう解釈すればよいのですか?



or検索は、書かれている「grep "aaa|bbb" sample.txt」で合ってます。なんでそうなるかは、grep のマニュアルを読んでください。英語でも読んでください。英語を読まずにUNIXを使うのは無茶です。

and検索は「grep "aaa.*bbb|bbb.*aaa" sample.txt」とか「grep "aaa" sample.txt | grep "bbb"」などです。
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2006-05-17 17:19
and検索は肯定先読みを使って
^(?=*aa)(?=*bb)
でもできます

[ メッセージ編集済み 編集者: 明智重蔵 編集日時 2006-05-17 18:19 ]
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-05-17 18:31
^ ( ? = * a a ) ( ? = * b b )

grep は古いコマンドなので、最新式の 正規表現が 使えない場合が多い。
sed ・・・
検索語
grepで使える正規表現
tmp
会議室デビュー日: 2006/01/12
投稿数: 11
投稿日時: 2006-05-17 20:39
引用:

未記入さんの書き込み (2006-05-17 15:36) より:
manでは見ましたが、英語なのでよく分かりませんでした。


同感ですが…、調査はされていますでしょうか?

私も英語が苦手なので日本語manが閲覧できるサイトを利用していますが、
下記URLは参照済みでしょうか?
http://www.linux.or.jp/JM/index.html

「man on WWW」 or 「全文検索」でお探しのコマンドのman
が参照できるかも知れません。


[ メッセージ編集済み 編集者: tmp 編集日時 2006-05-19 09:12 ]
1

スキルアップ/キャリアアップ(JOB@IT)