2007/06/13

今更人には聞けないgrepのオプション(後編)

前編はこちら

  • -G (--basic-regexp)

  • PATTERNを、基本正規表現(Regular Expression)として扱います。デフォルトです。
  • -E (--extended-regexp)

  • PATTERNに、拡張正規表現(Extended Regular Expression)を使えるようにします。
  • -e PATTERN (--regexp=PATTERN)

  • PATTERNが"-(ハイフォン)"から始まっている場合、grepはエラーになります。-eオプションをつけることで、"-"から始まるPATTERNを指定することが可能になります。
    例:

    $ cat data.txt
    A-BCDE
    $ grep "-BCD" data.txt
    grep: unknown option -- B
    $ grep '-BCD' data.txt
    grep: unknown option -- B
    $ grep -e "-BCD" data.txt
    A-BCDE

  • -w (--word-regexp)

  • 単語として完全にマッチする行のみ選択します。

    $ cat data.txt
    CD
    CDDB
    ECD
    $ grep -w "CD" ./data.txt
    CD

  • -x (--line-regexp)

  • 行全体と正確にマッチする行だけを選択します。
    例:

    $ cat data.txt
    ABCDE
    $ grep -w "BCD" data.txt
    $ grep -w "ABCDE" data.txt
    ABCDE

  • -F (--fixed-strings)

  • PATTARNを、改行で区切られた複数の文字列リストとして扱い、いずれかとマッチした場合選択します。

    $ cat data.txt
    ABCDE
    FGHIJ
    KLMNO
    PQRST
    UVWXY
    $ grep "CD
    ST
    XY" ./data.txt
    ABCDE
    PQRST
    UVWXT

  • -i (--ignore-case)

  • マッチングの時に、英大文字と小文字の区別をしません。
    例:

    $ cat data.txt
    AbCDE
    $ grep "BCD" data.txt
    $ grep -i "BCD" data.txt
    AbCDE

  • ちょっとしたTips

  • 設定ファイルでよく使われる、先頭に#が入ったコメント行以外を抜き出す方法が以下の2通りがあります。

    $ grep "^[^#]" ./data.txt
    $ grep -v "^#" ./data.txt