5.8.1 エスケープの優先順位

GNU sedは、s///コマンドの正規表現照合やアドレス照合へテキストを渡す前に、エスケープシーケンスを処理します。そのため、次の2つのコマンドは同じです(「0x5e」は文字「^」の16進ASCII値です)。

$ echo 'a^c' | sed 's/^/b/'
ba^c

$ echo 'a^c' | sed 's/\x5e/b/'
ba^c

次のコマンドも同じです(「0x5b」「0x5d」は、それぞれ「[」「]」の16進ASCII値です)。

$ echo abc | sed 's/[a]/x/'
xbc
$ echo abc | sed 's/\x5ba\x5d/x/'
xbc

ただし、思わぬ境界事例があるため、このような特殊文字の使用は避けることを推奨します。たとえば、次のコマンドは同じではありません。

$ echo 'a^c' | sed 's/\^/b/'
abc

$ echo 'a^c' | sed 's/\\\x5e/b/'
a^c