stdin として次のものがあるとします (例として)
Life is temporary
sedでこれを置き換えたい
Life is permanent
次のようなコマンドで
sed 's/Life<%XY=.*>temporary/Life%XYpermanent'
もちろん、上記は有効なコマンドではなく、例として提供されているものであることは承知しています。.*
一致するものはすべて変数に保存し、置換文字列でその変数を呼び出したいのです。
答え1
sed 's/Life\(.*\)temporary/Life\1permanent/'
ここでは、パターン内の最初の括弧のペアを指します。この場合はこれが唯一のペアですが、通常は、 など、最大 まで\1
複数のペアを使用できます。\2
\3
\9
括弧はエスケープされています。 括弧\
がなければ、文字どおりに解釈され、\1
機能しません。 を使用するとsed -E
、逆になります。 は(
特別になり、\(
リテラルを表します(
(一般に、これが唯一の違いではないことに注意してください-E
)。
sed -E 's/Life(.*)temporary/Life\1permanent/'
この変更により、sed
人間にとってコードが多少読みやすくなります。