删除空的XML标记通过UNIX

问题描述:

SED我有是,如删除空的XML标记通过UNIX

<action></action> 

需要从XML文件中删除这些标签的空标签一个XML文件。

尝试:

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

任何帮助将appriciated。

+0

您的内容与空标签后留下的空行被删除?一般来说,使用专门的XML工具比使用丑陋的黑客更好。 –

+0

如果开始和结束标签位于不同的行上,您希望发生什么?这仍然是空的或是'\ n'重要的? –

务必:

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