-
echo "123456xx111"| sed '{s/\([x]\)/{\1}/}' 123456{x}x111
-
echo "123456xx111"| sed '{s/\([x]+\)/{\1}/}' 123456xx111
答え1
Plusはサポートされている場合はバックスラッシュが必要です(GNU拡張)。
echo "123456xx111"| sed '{s/\([x]\+\)/{\1}/}'
123456{xx}111
または拡張正規表現に切り替えます。
echo "123456xx111"| sed -E '{s/([x]+)/{\1}/}'
123456{xx}111
{}
外部文字は何もしません。閉じた中括弧の前にセミコロンや改行文字を持たない一部のsed実装では機能しない可能性があるため、式を大幅に簡素化できます。文字列全体を使用するときに何もキャプチャする必要はありません。
echo "123456xx111"| sed -E 's/x+/{&}/'
123456{xx}111
または-E
、GNU拡張がない場合(したがって、数量子は\{1,\}
「1つ以上」です):
echo "123456xx111"| sed 's/x\{1,\}/{&}/'
123456{xx}111