-
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,\}
“一个或多个”):
echo "123456xx111"| sed 's/x\{1,\}/{&}/'
123456{xx}111