我有一个我想要匹配的模式:
<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'
有人能指出我正确的方向吗?
答案 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。我上班的时候会改变一堆脚本!