2014-01-13 108 views
2

如果我有一個包含這個地方的字符串(美孚可能是任何東西):Linux的SED正則表達式替換,但保留通配符

<tag>Foo</tag> 

我將如何使用SED和正則表達式,這種替換:

[tag]Foo[/tag] 

我的失敗嘗試:

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

首先通過使用替代字符來劃分s/s/r /來簡化你的正則表達式,比如's @ .... @ ..... @'。一些sed需要警告你使用一個備用(只是第一個字符),所以是\ @ ... @ ... @'。祝你好運。 – shellter

回答

3

你的正則表達式中缺少終止/

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

有了這個,您可以替換所有類型的標籤,而不必是標籤特定的。

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

希望這有助於。

相關問題