tamanegiの日記: grep 13
日記 by
tamanegi
grepって -e "pat1" -e "pat2"って並べるだけでOR検索できたのね…。
今まで知らんかった。これまで "pat1\|pat2" とかでやってたけど、
バックスラッシュでいつも混乱してた。
# 次からは -e 並べる方を使うようにしよう
grepって -e "pat1" -e "pat2"って並べるだけでOR検索できたのね…。
今まで知らんかった。これまで "pat1\|pat2" とかでやってたけど、
バックスラッシュでいつも混乱してた。
# 次からは -e 並べる方を使うようにしよう
人生unstable -- あるハッカー
なるほど。 "-e, --regexp=PATTERN" (スコア:2)
-e, --regexp=PATTERN 一致処理に PATTERN を使用する
OPTIONS
Matching Control
-e PATTERN, --regexp=PATTERN
Use PATTERN as the pattern. This can be used to specify
multiple search patterns, or to protect a pattern beginning with
a hyphen (-). (-e is specified by POSIX.)
正規表現(regexp)というキーワードの方ばっかり見て複数指定可能ということを見落としていた。
それとゆるく使いたいとき POSIX 無視というのが安易な道だったということもある。。。
3つくらいから (スコア:2)
-f pattern-file
だなぁ。
Re:3つくらいから (スコア:1)
「三つ子の魂百まで」?
Re:3つくらいから (スコア:2)
「♪俺たち、わんぱくトリオだぞ…」
でも女の子には、イジめられたりするという、違う方向の可能性があります。
蝶のマスクをつけ、ボンテージで鞭をふるう…そんなサリーちゃんは嫌だ。
Re:3つくらいから (スコア:1)
傑作の予感がします。
誰か二次作品描いてください。
/* ♪いたずらするのが大好きだ */
Re:3つくらいから (スコア:2)
原作書きますよぉ。三角木馬に並んで乗せられる三つ子とかぁ。
Re:3つくらいから (スコア:2)
カブはシスコンになってしまって、お姉ちゃんでしか◯たないので、30歳になる今も◯貞。
まわりからは「魔法使い」と呼ばれているとかぁ。
egrep (スコア:1)
そういうときはいつも
% egrep "pat1|pat2" file
ってやってました。
grep -e だと | は\でエスケープしないといけなかったのか。
Re:egrep (スコア:1)
egrepだとエスケープしなくてよかったんだ…orz
# 動作が違うとは思ってなかった
Re:egrep (スコア:1)
私もegrep派なんですが、むしろ「grep でも、\| でOR指定ができる」ということの方が驚きです。
egrep の e は extended の e。egrep は「検索条件に拡張された正規表現が使える」のと「非決定性オートマトンから決定性オートマトンに変換してから検索するので、メモリ消費が大きいけど処理は高速」なのが特徴だったのですが…
その「拡張正規表現」で増えた機能の一つが「|」(OR選択)ですね。あとは「(~)」によるグルーピング、「?」(0回か1回)、「+」(1回以上)とか。これらは従来のgrepやvi/exでは使えません。
#だから、grep と egrep では、動作はかなり違う、という認識。
ところが、GNU grep の場合、grep/fgrep/egrep の3コマンドの実体は同じで、ファイル名によってモードが切り替わるようになってます。でもって、
ってことで、grepでも\|や\(など\を付けることで拡張正規表現も使えるようになっており、表現能力そのものもegrep相当に引き上げられてるんですね。
Re:egrep (スコア:1)
自分も非Linux環境だとgrepとegrepは結構使い分けてたんですが、Linux(というかGNUな環境)だと
>grep/fgrep/egrep の3コマンドの実体は同じ
なんであんまり意識してなかったんですよね。そしたら思ってたよりも挙動が違ってた…。最近は非GNUな環境にはほとんど縁がなかったからegrepを明示的に使った記憶もないし、エスケープするかどうかはその場で両方試してうまくいった方を使うみたいなことをしていたから気づく要素がなかったみたいです。
Re:egrep (スコア:1)
>grep/fgrep/egrep の3コマンドの実体は同じ
それぞれ別もんだと思ってました、zgrepも似たような扱いなのかな。
普段はgrep使っていて、or検索のときだけegrepを、フレーズというか記号入交りの「文」で検索するときはfgrepという感じでなんとなく使い分けてました。
Re:egrep (スコア:1)
> 普段はgrep使っていて、or検索のときだけegrepを、フレーズというか記号入交りの「文」で検索するときはfgrepという感じでなんとなく使い分けてました。
ああ、私もまったく同じように使い分けてます。
grep/egrep/frepが実体が同じだってことは知ってますけど、gzip/gunzip とかと同じのりで、使いたい操作でコマンドを使い分ける感じで。
> それぞれ別もんだと思ってました
本来のUNIXでは別もんです。
でも、機能的にだいぶ重複してるので、互換プログラムである GNU grep では「3コマンドの機能を全部まとめて1プログラムに入れちゃった」ってことで。
> zgrepも似たような扱いなのかな。
というわけで、zgrep も実体はgrepですね。