我正在尝试解析命令行工具的输出。它直接将XML输出到STDOU
,我想解析它。
我的目标是解析该输出,只解析<date>
标记之间的字符串,但由于文档可能包含其他<date>
标记,因此必须仅检查<date>
之后的<key>SULastCheckTime</key>
。 (这是一个混乱的情况,有新的行/空格)。
目前我正在使用以下命令解决这种情况:
tool... | grep -A1 '<key>SULastCheckTime</key>' | grep 'string.$' | sed -e 's,.*<date>\([^<]*\)</date>.*,\1,g'
它工作正常,但你看得很乱,我写不出更好的东西?你能帮助我做得更好吗?
谢谢!
PS:因为我在OSX中这样做,所以我没有新的GNU grep
选项。顺便说一下,bash版本是3.2.48(1)。而且......我无法安装其他工具以更好的方式解析XML。
答案 0 :(得分:1)
也许是这样的?
$ cat foo.input
foo
foo
<key>some key</key>
<date>some date</date>
bar
bar
<key>SULastCheckTime</key>
<date>2013-08-10T00:27:40Z</date>
quux
quux
$ awk '/<key>SULastCheckTime<\/key>/ { toggle=1 } toggle && /<date>.*<\/date>/ { gsub(/<[^>]*>/, "", $1); print; exit }' foo.input
2013-08-10T00:27:40Z