パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

grep」記事へのコメント

  • そういうときはいつも

    % egrep "pat1|pat2" file

    ってやってました。

      grep -e だと | は\でエスケープしないといけなかったのか。

    • egrepだとエスケープしなくてよかったんだ…orz

      # 動作が違うとは思ってなかった

      • 私もegrep派なんですが、むしろ「grep でも、\| でOR指定ができる」ということの方が驚きです。

        egrep の e は extended の e。egrep は「検索条件に拡張された正規表現が使える」のと「非決定性オートマトンから決定性オートマトンに変換してから検索するので、メモリ消費が大きいけど処理は高速」なのが特徴だったのですが…
        その「拡張正規表現」で増えた機能の一つが「|」(OR選択)ですね。あとは「(~)」によるグルーピング、「?」(0回か1回)、「+」(1回以上)とか。これらは従来のgrepやvi/exでは使えません。

        #だから、grep と egrep では、動作はかなり違う、という認識。

        • 自分も非Linux環境だとgrepとegrepは結構使い分けてたんですが、Linux(というかGNUな環境)だと

          >grep/fgrep/egrep の3コマンドの実体は同じ

          なんであんまり意識してなかったんですよね。そしたら思ってたよりも挙動が違ってた…。最近は非GNUな環境にはほとんど縁がなかったからegrepを明示的に使った記憶もないし、エスケープするかどうかはその場で両方試してうまくいった方を使うみたいなことをしていたから気づく要素がなかったみたいです。

          • by nemui4 (20313) on 2014年07月11日 14時04分 (#2637453) 日記

            >grep/fgrep/egrep の3コマンドの実体は同じ

            それぞれ別もんだと思ってました、zgrepも似たような扱いなのかな。

            普段はgrep使っていて、or検索のときだけegrepを、フレーズというか記号入交りの「文」で検索するときはfgrepという感じでなんとなく使い分けてました。

            親コメント
            • by taka2 (14791) on 2014年07月11日 15時50分 (#2637544) ホームページ 日記

              > 普段はgrep使っていて、or検索のときだけegrepを、フレーズというか記号入交りの「文」で検索するときはfgrepという感じでなんとなく使い分けてました。

              ああ、私もまったく同じように使い分けてます。
              grep/egrep/frepが実体が同じだってことは知ってますけど、gzip/gunzip とかと同じのりで、使いたい操作でコマンドを使い分ける感じで。

              > それぞれ別もんだと思ってました

              本来のUNIXでは別もんです。
              でも、機能的にだいぶ重複してるので、互換プログラムである GNU grep では「3コマンドの機能を全部まとめて1プログラムに入れちゃった」ってことで。

              > zgrepも似たような扱いなのかな。

              % man grep
              GREP(1)                                                                GREP(1)
               
              NAME
                     grep,  egrep,  fgrep, zgrep, zegrep, zfgrep, bzgrep, bzegrep, bzfgrep -
                     print lines matching a pattern
              (略)
                     In addition, two variant programs egrep and fgrep are available.  egrep
                     is  the  same  as grep -E.  fgrep is the same as grep -F.  zgrep is the
                     same as grep -Z.  zegrep is the same as grep -EZ.  zfgrep is  the  same
                     as grep -FZ.
              (略)
                     -Z, --decompress
                            Decompress the input data before searching.  This option is only
                            available if compiled with zlib(3) library.
              (略)
              GNU Project                       2002/01/22                           GREP(1)
               
              % ls -li /usr/bin/*grep
              4078730 -r-xr-xr-x  9 root  wheel  86984  7  5  2012 /usr/bin/bzegrep
              4078730 -r-xr-xr-x  9 root  wheel  86984  7  5  2012 /usr/bin/bzfgrep
              4078730 -r-xr-xr-x  9 root  wheel  86984  7  5  2012 /usr/bin/bzgrep
              4078730 -r-xr-xr-x  9 root  wheel  86984  7  5  2012 /usr/bin/egrep
              4078730 -r-xr-xr-x  9 root  wheel  86984  7  5  2012 /usr/bin/fgrep
              4078730 -r-xr-xr-x  9 root  wheel  86984  7  5  2012 /usr/bin/grep
              4078730 -r-xr-xr-x  9 root  wheel  86984  7  5  2012 /usr/bin/zegrep
              4078730 -r-xr-xr-x  9 root  wheel  86984  7  5  2012 /usr/bin/zfgrep
              4078730 -r-xr-xr-x  9 root  wheel  86984  7  5  2012 /usr/bin/zgrep

              というわけで、zgrep も実体はgrepですね。

              親コメント

ソースを見ろ -- ある4桁UID

処理中...