0

我有一个要匹配的模式:

<x>anything</x>

我正在尝试用“某物”替换“任何东西”(可以是任何文本,而不是任何文本 - (.*)),因此任何出现都会变成:

<x>something</x>

我正在尝试使用以下 sed 命令:

sed "s/<x>.*</x>/<x>something</x>/g" file  

我收到以下错误:

sed: -e expression #1, char 19: unknown option to `s'

有人可以指出我正确的方向吗?

4

2 回答 2

2

这可能对您有用(GNU sed):

sed -r 's/(<x>)[^<]*/\1something/g' file

这看起来要替换<x>和在同一行上重复的<东西。<x>something

NB.*是贪婪的,很可能会吞下同一行上的更多标签。

于 2013-08-18T08:54:14.097 回答
0

结束 XML 标记中的斜线使其混淆。尝试像这样逃避它们:

sed "s/<x>.*<\/x>/<x>something<\/x>/g" file

您显然也可以使用我以前从未见过的等号。当我开始工作时,我将更改一堆脚本!

于 2013-08-18T08:47:49.073 回答