5.2 基本正規表現(BRE)と拡張正規表現(ERE)
基本正規表現と拡張正規表現は、指定するパターンの構文が異なる2つの形式です。sedでは基本正規表現(BRE)の構文が既定です(grepも同様です)。拡張正規表現(ERE)の構文を有効にするには、POSIXで規定された-Eオプション(-r、--regexp-extended)を使います。
GNU sedでは、基本正規表現と拡張正規表現の違いは、「?」「+」、丸括弧、波括弧(「{}」)、および「|」という少数の特殊文字の動作だけです。
基本(BRE)構文では、これらの文字は前にバックスラッシュ(「\」)を付けなければ特別な意味を持ちません。拡張(ERE)構文では逆で、前にバックスラッシュ(「\」)を付けなければ特殊文字になります。
| 表したいパターン | 基本(BRE)構文 | 拡張(ERE)構文 |
|---|---|---|
| 文字そのものの「+」(プラス記号) | $ echo 'a+b=c' > foo $ sed -n '/a+b/p' foo a+b=c | $ echo 'a+b=c' > foo $ sed -E -n '/a\+b/p' foo a+b=c |
| 1つ以上の「a」の後に「b」が続く(プラス記号を特殊なメタ文字として使用) | $ echo aab > foo $ sed -n '/a\+b/p' foo aab | $ echo aab > foo $ sed -E -n '/a+b/p' foo aab |