Sed:在替换中使用匹配的文本
Sed: Use matched text in substitution
我如何使用 sed
以便在找到匹配项时,我可以在替换字段中使用它?
例如
echo "12a34" | sed 's/a/#bcd/g'
12abcd34
我应该用什么替换 #
以获得预期的结果?
使用&
:
echo '12a34' | sed 's/a/&bcd/g'
12abcd34
&
在 s///
命令的替换子句中指的是模式匹配的内容,在本例中是 a
。
这个特殊情况并没有很好地展示它是如何工作的,因为 a
不是一个非常有趣的正则表达式,所以让我添加一个更好的例子:
echo foobar | sed 's/[fb]/&42/g'
f42oob42ar
其中 f
和 b
与 [fb]
匹配,随后替换为 f42
和 b42
。
我如何使用 sed
以便在找到匹配项时,我可以在替换字段中使用它?
例如
echo "12a34" | sed 's/a/#bcd/g'
12abcd34
我应该用什么替换 #
以获得预期的结果?
使用&
:
echo '12a34' | sed 's/a/&bcd/g'
12abcd34
&
在 s///
命令的替换子句中指的是模式匹配的内容,在本例中是 a
。
这个特殊情况并没有很好地展示它是如何工作的,因为 a
不是一个非常有趣的正则表达式,所以让我添加一个更好的例子:
echo foobar | sed 's/[fb]/&42/g'
f42oob42ar
其中 f
和 b
与 [fb]
匹配,随后替换为 f42
和 b42
。