求shell 脚本处理如下xml文本

ithiker 2014-02-12 03:38:40

<root>
<pattern>
<A></A>
<B></B>
<C></C>
</pattern>
<pattern>
<C></C> <!-- 顺序可能不一样 -->
<A></A>
<B></B>
</pattern>
<pattern>
<A></A>
<B></B>
<C>1.0</C> <!-- 只转换那些A,B,C之间全为空的 -->
</pattern>
</root>


转换后:

<root>
<pattern>
<A>0</A>
<B>0</B>
<C>0</C>
</pattern>
<pattern>
<C>0</C>
<A>0</A>
<B>0</B>
</pattern>
<pattern>
<A></A>
<B></B>
<C>1.0</C>
</pattern>
</root>
...全文
171 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ithiker 2014-02-16
  • 打赏
  • 举报
回复
引用 6 楼 ljc007 的回复:
如果问题解决了,请点击左上角“结帖”按钮
不好意思,太忙没登陆,谢谢版主~
Carl_CCC 2014-02-13
  • 打赏
  • 举报
回复
引用 2 楼 ljc007 的回复:
awk -vRS='pattern' '!/>\S+</{gsub(/></,">0<")}{printf $0RS}' test.xml
2楼的awk真彪悍,佩服。
ithiker 2014-02-13
  • 打赏
  • 举报
回复
awk把最后一个pattern中的含有1.0的A,B处都改了,不是预期的; china unix上的回复: sed -r '/<pattern>/{:1;N;/<\/pattern>/!b1;/>\S+</b;s/></>0</g}'
ljc007 2014-02-13
  • 打赏
  • 举报
回复
awk -vRS='pattern' '!/>\S+</{gsub(/></,">0<")}{printf $0RS}' test.xml
ljc007 2014-02-13
  • 打赏
  • 举报
回复
如果问题解决了,请点击左上角“结帖”按钮
ljc007 2014-02-13
  • 打赏
  • 举报
回复
引用
awk把最后一个pattern中的含有1.0的A,B处都改了,不是预期的;
awk的版本问题
ithiker 2014-02-12
  • 打赏
  • 举报
回复
嗯,人气不行啊

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧