【问题标题】:Search for a string inside an XML record and return the whole record to output file在 XML 记录中搜索字符串并将整个记录返回到输出文件
【发布时间】:2014-10-26 03:30:57
【问题描述】:

我有一堆 XML 文件(file1、file2....file30),每个文件中都有几条记录。每条记录都以 标记开始,以 标记结束。假设我想找到包含元素 1122 的任何记录并以这种格式返回整个记录: 开始和结束标记之间的所有内容。我怎样才能做到这一点?这是示例输入和预期输出

输入:

文件 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> 

输出:

&lt;Place&gt; &lt;category&gt; 1122 &lt;/category&gt; &lt;/Place&gt; &lt;Place&gt; &lt;category&gt; 1122 &lt;/category &lt;/Place&gt; &lt;Place&gt; &lt;category&gt; 1122 &lt;/category &lt;/Place&gt;

非常感谢您的帮助。

【问题讨论】:

  • 发布一些实际的示例输入和预期输出,而不是仅仅告诉我们一些关于它的事情。
  • 感谢您的建议,埃德。

标签: xml sed grep find


【解决方案1】:

你可能想要这样的东西:

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

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

【讨论】:

  • 谢谢。我刚刚删除了评论并更新了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 2017-10-05
相关资源
最近更新 更多