まくまくsed/awkノート
sed で置換するときに後方参照を使用する
2009-04-05

sed による文字列置換で後方参照の機能を使用すると、パターンに一致した実際の文字列を、置換後の文字列を構成する際に参照することができます。

正規表現に一致した全体の文字列は、& で参照することができます。

例: 日付らしき文字列 (YYYY-MM-DD) を [ と ] で囲む

$ sed 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/[&]/' input.txt

パターンに一致した文字列を、複数の部分に分けて後方参照したい場合は、次のように正規表現パターンを \(\) で囲んでグルーピングします。 参照時は、それぞれのグループごとに \1\2 のように参照します。

例: パターンに一致した2つの文字列の前後を入れ替える

$ sed 's/\(pattern1\) \(pattern2\)/\2\1/g' input.txt

pattern1pattern2 には任意の正規表現が記述されていると思ってください。

2009-04-05