在XML记录中搜索字符串并将整个记录返回到输出文件

时间:2014-09-01 22:47:35

标签: xml sed grep find

我有一堆XML文件(file1,file2 .... file30),每个文件中都有几条记录。每条记录都以< -Place>开头。标记并以< - / Place>结尾标签。假设我想找到包含元素1122的任何记录,并以这种格式返回整个记录:< -Place>开放与开放之间的一切关闭标记< - / PLace>。我怎样才能做到这一点?这是样本输入和预期输出

输入:

文件1:

 <Place> <category> 1122 </category> </Place> <Place> <category> 1125 </category </Place> <Place> <category> 1122 </category </Place>

文件2:

<Place><category> 1122 </category> </Place> <Place><category> 1126 </category> </Place> 

Out put:

<Place> <category> 1122 </category> </Place> <Place> <category> 1122 </category </Place> <Place> <category> 1122 </category </Place>

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

你可能想要这样的东西:

awk '
/<-Place>/ { f=1 }
f { rec = rec $0 RS }
/<-\/Place>/ {
    if (rec ~ /1122/) {
        printf "%s", rec
    }
    rec = ""
    f = 0
}
'

但没有样本输入和预期输出,这只是猜测。