5.8 エスケープシーケンス:特殊文字の指定
ここまでに扱ったエスケープは、「\^」の形式だけでした。これは、キャレットを特殊文字として解釈せず、その文字自身として扱うようsedに指示します。たとえば、「\*」は、0個以上のバックスラッシュではなく1個のアスタリスクに一致します。
この章では、別の種類のエスケープ6を紹介します。通常はその文字自身として扱う文字または文字列に適用し、sedが特殊な文字に置き換えるエスケープです。これにより、パターン内の表示できない文字を、目に見える形で符号化できます。sedスクリプトには非表示文字を含める制限はありませんが、シェルやテキスト編集でスクリプトを作るときは、そのバイナリ文字よりも以下のエスケープシーケンスを使う方が通常は簡単です。
これらのエスケープは次のとおりです。
\aBEL文字、つまり「アラート」(ASCIIの7)を生成するか、それに一致します。
\fフォームフィード(ASCIIの12)を生成するか、それに一致します。
\n改行(ASCIIの10)を生成するか、それに一致します。
\rキャリッジリターン(ASCIIの13)を生成するか、それに一致します。
\t水平タブ(ASCIIの9)を生成するか、それに一致します。
\vいわゆる「垂直タブ」(ASCIIの11)を生成するか、それに一致します。
\cxCONTROL-xを生成するか、それに一致します。ここでxは任意の文字です。「\cx」の正確な動作は次のとおりです。xが小文字なら大文字に変換し、その文字のビット6(16進数40)を反転します。そのため、「\cz」は16進数1Aになり、「\c{」は16進数3B、「\c;」は16進数7Bになります。
\dxxx10進数のASCII値がxxxである文字を生成するか、それに一致します。
\oxxx8進数のASCII値がxxxである文字を生成するか、それに一致します。
\xxx16進数のASCII値がxxである文字を生成するか、それに一致します。
「\b」(バックスペース)は、既存の「単語境界」の意味と衝突するため省かれました。
(6)
ここで紹介したエスケープは、\nを除いてすべてGNU拡張です。基本正規表現モードでは、POSIXLY_CORRECTを設定すると括弧式の中で無効になります。