使用 sed 查找和替换,而不是添加

使用 sed 查找和替换,而不是添加

我在标准输出中有一个简单的 URL 文本。部分 URL 如下所示。

https://somedomain./xx?t=s&u=random other text

我希望使用 sed 或命令行中的其他内容来更改此设置

https://somedomain./xx?t=l&u=random other text

我用过sed -e 's/s&/l&/'

我没有替换s&为而是进入了字符串。我的命令有问题吗?l&ls&

答案1

s您必须通过在命令右侧添加“\”来转义命令右侧的“&”字符。如果没有它,“&”是特殊的,会被正则表达式匹配的内容替换。在左侧,“&”不是特殊的,并且保证是非特殊的。你不想逃避它,因为 while&永远不会是特殊的,\&也不能保证是特殊的,并且它匹配的内容是未指定的。

所以:

sed -i 's/s&/l\&/g' file.txt

相关内容