Linux SED RegEx替换,但保留通配符
如果我有一个字符串,其中某处包含此内容(Foo可以是任何内容): 我失败的尝试:Linux SED RegEx替换,但保留通配符,regex,linux,sed,regex-group,Regex,Linux,Sed,Regex Group,如果我有一个字符串,其中某处包含此内容(Foo可以是任何内容): 我失败的尝试: echo "<tag>Foo</tag>" | sed "s/<tag>\(.*\)<\\/tag>/[tag]\1[\\/tag]" echo“Foo”| sed“s/\(.\\)/[tag]\1[\\\/tag]” 您的正则表达式缺少终止的/ $ echo "<tag>Foo</tag>" | sed "s/<tag>\(.*
echo "<tag>Foo</tag>" | sed "s/<tag>\(.*\)<\\/tag>/[tag]\1[\\/tag]"
echo“Foo”| sed“s/\(.\\)/[tag]\1[\\\/tag]”
您的正则表达式缺少终止的/
$ echo "<tag>Foo</tag>" | sed "s/<tag>\(.*\)<\\/tag>/[tag]\1[\\/tag]/"
[tag]Foo[/tag]
$echo“Foo”| sed“s/\(.\\)/[tag]\1[\\/tag]/”
[tag]Foo[/tag]
使用此选项,您可以替换所有类型的标记,而不必是特定于标记的
$echo "<tag>Foo</tag>" | sed "s/[^<]*<\([^>]*\)>\([^<]*\)<\([^>]*\)>/[\1]\2[\3]/"
$echo“Foo”sed“s/[^\([^/[\1]\2[\3]/”
希望这能有所帮助。首先简化您的正则表达式,使用替代字符来分隔s/s/r/,如
s@....@..…@
。一些sed需要得到警告,您正在使用备用字符(仅用于第一个字符),因此s\@…@
。祝您好运。
$ echo "<tag>Foo</tag>" | sed "s/<tag>\(.*\)<\\/tag>/[tag]\1[\\/tag]/"
[tag]Foo[/tag]
$echo "<tag>Foo</tag>" | sed "s/[^<]*<\([^>]*\)>\([^<]*\)<\([^>]*\)>/[\1]\2[\3]/"