【发布时间】:2016-09-07 14:50:54
【问题描述】:
您好,我有一个很大的日志文件,我正在尝试将 xml 数据传递给它。
我有一个与此类似的大日志文件:
2016/01/01 bladh bqskjdqskldjqsdlqskdjqlskdj dazihzmkldjkdjqslkjd
2016/01/01: qsdhqsdlkqsmdjqsldjqslkdjqlskdjqslkdjqslkdjqskdjqsd
2016/01/01: qsjdqmlskdmlqskdmcxxxx [qskjd][qsdjqslkdj] Payload :[<LOG><a>a</a>
<b>b</b>
<c>c</c>
<id>XXXXX</id>
<d>d</d>
</LOG>]]
2016/01/01 bladh bqskjdqskldjqsdlqskdjqlskdj dazihzmkldjkdjqslkjd
2016/01/01: qsdhqsdlkqsmdjqsldjqslkdjqlskdjqslkdjqslkdjqskdjqsd
2016/01/01: qsjdqmlskdmlqskdmcxxxx [qskjd][qsdjqslkdj] Payload :[<LOG> <a>a</a>
<b>b</b>
<c>c</c>
<id>YYYYY</id>
<d>d</d>
</LOG>]]
qskdmqlskdqlsdqlskdqlsdk
qsdlkqsdlkqsdmlkqsdlk
目前我正在使用
sed -n '/<START/{:start /\/END/!{N;b start};/XXXXX/p}' logFile
我得到了这个
2016/01/01: qsjdqmlskdmlqskdmcxxxx [qskjd][qsdjqslkdj] Payload :[<LOG><a>a</a>
<b>b</b>
<c>c</c>
<id>XXXXX</id>
<d>d</d>
</LOG>]]
我想检索整个 XML 并获取:
<LOG>
<a>a</a>
<b>b</b>
<c>c</c>
<id>XXXX</id>
<d>d</d>
</LOG>
提前致谢
【问题讨论】:
-
尝试
grep -oPz '(?s)<LOG>.*?</LOG>' logFile | tr '\0' '\n'检索所有<LOG>...</LOG> -
sed '/^</!d'怎么样? -
我想我的 grep 已经过时了?? grep: -P 和 -z 选项不能组合
-
检查你的手册页,可能是
-Z而不是-z