<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>
7 个解决方案
#1
嗯,人气不行啊
#2
awk -vRS='pattern' '!/>\S+</{gsub(/></,">0<")}{printf $0RS}' test.xml
#3
awk把最后一个pattern中的含有1.0的A,B处都改了,不是预期的;
china unix上的回复:
sed -r '/<pattern>/{:1;N;/<\/pattern>/!b1;/>\S+</b;s/></>0</g}'
china unix上的回复:
sed -r '/<pattern>/{:1;N;/<\/pattern>/!b1;/>\S+</b;s/></>0</g}'
#4
2楼的awk真彪悍,佩服。
#5
awk的版本问题
#6
如果问题解决了,请点击左上角“结帖”按钮
#7
不好意思,太忙没登陆,谢谢版主~
#1
嗯,人气不行啊
#2
awk -vRS='pattern' '!/>\S+</{gsub(/></,">0<")}{printf $0RS}' test.xml
#3
awk把最后一个pattern中的含有1.0的A,B处都改了,不是预期的;
china unix上的回复:
sed -r '/<pattern>/{:1;N;/<\/pattern>/!b1;/>\S+</b;s/></>0</g}'
china unix上的回复:
sed -r '/<pattern>/{:1;N;/<\/pattern>/!b1;/>\S+</b;s/></>0</g}'
#4
2楼的awk真彪悍,佩服。
#5
awk的版本问题
#6
如果问题解决了,请点击左上角“结帖”按钮
#7
不好意思,太忙没登陆,谢谢版主~