このページの内容

5.8 エスケープシーケンス:特殊文字の指定

ここまでに扱ったエスケープは、「\^」の形式だけでした。これは、キャレットを特殊文字として解釈せず、その文字自身として扱うようsedに指示します。たとえば、「\*」は、0個以上のバックスラッシュではなく1個のアスタリスクに一致します。

この章では、別の種類のエスケープ6を紹介します。通常はその文字自身として扱う文字または文字列に適用し、sedが特殊な文字に置き換えるエスケープです。これにより、パターン内の表示できない文字を、目に見える形で符号化できます。sedスクリプトには非表示文字を含める制限はありませんが、シェルやテキスト編集でスクリプトを作るときは、そのバイナリ文字よりも以下のエスケープシーケンスを使う方が通常は簡単です。

これらのエスケープは次のとおりです。

\a

BEL文字、つまり「アラート」(ASCIIの7)を生成するか、それに一致します。

\f

フォームフィード(ASCIIの12)を生成するか、それに一致します。

\n

改行(ASCIIの10)を生成するか、それに一致します。

\r

キャリッジリターン(ASCIIの13)を生成するか、それに一致します。

\t

水平タブ(ASCIIの9)を生成するか、それに一致します。

\v

いわゆる「垂直タブ」(ASCIIの11)を生成するか、それに一致します。

\cx

CONTROL-xを生成するか、それに一致します。ここでxは任意の文字です。「\cx」の正確な動作は次のとおりです。xが小文字なら大文字に変換し、その文字のビット6(16進数40)を反転します。そのため、「\cz」は16進数1Aになり、「\c{」は16進数3B、「\c;」は16進数7Bになります。

\dxxx

10進数のASCII値がxxxである文字を生成するか、それに一致します。

\oxxx

8進数のASCII値がxxxである文字を生成するか、それに一致します。

\xxx

16進数のASCII値がxxである文字を生成するか、それに一致します。

「\b」(バックスペース)は、既存の「単語境界」の意味と衝突するため省かれました。

(6)

ここで紹介したエスケープは、\nを除いてすべてGNU拡張です。基本正規表現モードでは、POSIXLY_CORRECTを設定すると括弧式の中で無効になります。