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