通过unix中的SED从文件中删除空的xml标记

时间:2016-11-08 05:14:41

标签: xml bash unix sed

我有一个xml文件,其中包含空标记,如

<action></action>

需要从xml文件中删除这些标记。

尝试:

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

任何帮助都会得到满足。

1 个答案:

答案 0 :(得分: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'