shell多行匹配如何实现

来源:互联网 发布:剑三少林成男捏脸数据 编辑:程序博客网 时间:2024/05/04 02:19

http://bbs.chinaunix.net/thread-1095236-1-1.html

我想从xml文件中匹配需要的数据:
<A>111111</A>
<B>1</B>
<C></C>
<d>
    <A>22222</A>
    <E>33</E>
</d>
<F>99</F>

我的目的是想找出<d> </d>之间<A></A>之间的数值22222;

现在我用的方法是先匹配出<d> </d>之间的内容:
INFO=`sed -n -e '/ <d>/,/<\/d>/p' $XMLFILE`
然后再在结果中匹配出<A> </A>之间的值;
AA=`echo $INFO | sed -n 's/.*<A>\(.*\)<\/A>.*/\1/p'`
这样得到<d> </d>之间<A></A>之间的数值22222;

 

sed -n '/<d>/,/<\/d>/{/<A>/s/.*<A>\(.*\)<\/A>/\1/p}'

 

http://bbs.csdn.net/topics/340192621