2011-12-29 238 views
3

我有一個看起來像這樣的流(除了更多的東西):正則表達式的sed

<ret:EditUse>Broadcast</ret:EditUse> 
<EditUse>Movie</EditUse> 

,我嘗試使用SED從中清理XML:

sed "s_</?(ret:)?EditUse>__" 

我已經使用RegexPal測試了正則表達式,但它在sed中似乎不起作用。任何想法,以什麼是錯的?

+2

[他來的小馬...](http://stackoverflow.com/a/1732454/554546) – 2011-12-29 16:40:12

+2

我不是試圖解析XML,我試圖剝奪它。我相信正則表達式非常適合這個特定的任務,特別是因爲EditUse是唯一顯示的標籤。 – 2011-12-29 16:43:07

回答

6

這是與sed工作正則表達式:

sed "s_</\?\(ret:\)\?EditUse>__g" 
  1. 逃生用反斜槓字符?()
  2. 使用g開關多次應用正則表達式中的每一行。

結果:

Broadcast 
Movie 
+2

如果使用'-r'選項(它啓用擴展正則表達式),它不會轉義。 – 2011-12-29 16:53:00

+0

@ KL-7:是的。你是對的。很高興知道命令行選項,但它也是GNU擴展,便攜性較低。 – Birei 2011-12-29 17:00:50

+1

http://www.gnu.org/software/sed/manual/sed.html#Extended-regexps – Vadzim 2011-12-29 17:09:04