Sed替换错误

时间:2013-08-18 08:36:05

标签: sed

我有一个我想要匹配的模式:

<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'

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

2 个答案:

答案 0 :(得分:2)

这可能适合你(GNU sed):

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

这样可以在同一行上重复<x>< <x>something重复的内容。

N.B。 .*贪婪,可能会在同一行上吞下更多标签。

答案 1 :(得分:0)

关闭XML标记中的斜杠令人困惑。试着像这样逃避它们:

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

你显然也可以使用我以前从未见过的an equals sign。我上班的时候会改变一堆脚本!