【发布时间】:2017-06-18 06:28:44
【问题描述】:
我正在尝试使用 sed 解析日志文件,以使用模板从中提取 xml 消息。我想在新文件中获取所有 xml 消息。
我正在使用这个命令sed 's/<sending>\(.*\)<\/sending>/\1/' input.out>output.xml
input.out 有以下内容:
WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?><sending><query> <describe> <data>city</data> </describe> </query></sending>]
Sep 26, 2016 11:54:30 AM org.apache.camel.util.CamelLogger log
WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?><sending> <query> <key_info/> </query></sending>]
我希望得到这样的结果:
<query> <describe> <data>city</data> </describe> </query> <query> <key_info/> </query>
但我只得到没有<sending> 和</sending> 元素的源文件,如下所示:
WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?><query> <describe> <data>city</data> </describe> </query>]
Sep 26, 2016 11:54:30 AM org.apache.camel.util.CamelLogger log
WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <query> <key_info/> </query>]
对不起我的英语,祝你有愉快的一天。谢谢你的帮助。
【问题讨论】:
-
试试
grep -oP '\<sending\>\K.*(?=\<\/sending\>)' filename