2016-11-08 99 views
0

SED我有是,如刪除空的XML標記通過UNIX

<action></action> 

需要從XML文件中刪除這些標籤的空標籤一個XML文件。

嘗試:

cat file1.xml | sed 's/\<action\>\<\/action\>//g' 

任何幫助將appriciated。

+0

您的內容與空標籤後留下的空行被刪除?一般來說,使用專門的XML工具比使用醜陋的黑客更好。 –

+0

如果開始和結束標籤位於不同的行上,您希望發生什麼?這仍然是空的或是'\ n'重要的? –

回答

1

務必:

sed -E 's#<([^>]+)></\1>##g' 
  • #s(取代)定界符作爲輸入包含/

  • <([^>]+)>匹配<然後子串高達下一個>匹配,並把所拍攝組1,>匹配文字>

  • </\1>匹配<,則/隨後捕獲的組1,則>

  • 整個匹配由空字符串替換,全局(g),即在一條直線上的情況下

實施例:

% sed -E 's#<([^>]+)></\1>##g' <<<'<action></action><action>ok</action>' 
<action>ok</action> 

編輯:

如果你只是想刪除只action標籤:

sed -E 's#<(action)></\1>##g' 
+0

感謝回覆@heemayl,但其刪除其他空白標籤也像 「」 請指教 – joy

+0

@joy檢查我的編輯。 – heemayl