删除空的XML标记通过UNIX
问题描述:
SED我有是,如删除空的XML标记通过UNIX
<action></action>
需要从XML文件中删除这些标签的空标签一个XML文件。
尝试:
cat file1.xml | sed 's/\<action\>\<\/action\>//g'
任何帮助将appriciated。
答
务必:
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'
您的内容与空标签后留下的空行被删除?一般来说,使用专门的XML工具比使用丑陋的黑客更好。 –
如果开始和结束标签位于不同的行上,您希望发生什么?这仍然是空的或是'\ n'重要的? –