Linux SED RegEx替换,但保留通配符

时间:2014-01-13 16:26:31

标签: regex linux sed regex-group

如果我有一个包含这个字符串的字符串(Foo可以是任何东西):

<tag>Foo</tag>

我如何使用SED和RegEx将其替换为:

[tag]Foo[/tag]

我失败的尝试:

echo "<tag>Foo</tag>" | sed "s/<tag>\(.*\)<\\/tag>/[tag]\1[\\/tag]"

2 个答案:

答案 0 :(得分:4)

您的正则表达式缺少终止/

$ echo "<tag>Foo</tag>" | sed "s/<tag>\(.*\)<\\/tag>/[tag]\1[\\/tag]/"
[tag]Foo[/tag]

答案 1 :(得分:2)

通过这种方式,您可以替换所有类型的标签,而不必是特定于标签。

$echo "<tag>Foo</tag>" | sed "s/[^<]*<\([^>]*\)>\([^<]*\)<\([^>]*\)>/[\1]\2[\3]/"

希望这会有所帮助。