【发布时间】:2017-02-22 18:03:18
【问题描述】:
我有大量长而不规则的日志,如下所示:
###<date> errortext <errorcode-xxxxx>
errortext
errortext
errortext
errortext
###<date> errortext <errorcode-yyyy>
errortext
errortext
###<date> errortext <errorcode-<zzzzzzz>
errortext
errortext
errortext
errortext
errortext
errortext
errortext
等
长度不规则,需要使用grep/awk/sed或类似方法查找相同错误码的错误。
我需要将这些文档按错误代码拆分,将一个代码的所有错误打印到一个文档中。
当我尝试使用如下行查找整个错误代码段时:
sed -n '/#</{:start /###/!{N;b start};/<errorcode-024332>/p}' file
上述行的问题在于它只会打印包含“errorcode-024332”的行,而不是所有错误代码,直到下一段开始(在这种情况下使用分隔符“###”)。
我如何做到这一点?
【问题讨论】:
-
stackoverflow.com/questions/38972736/… 可能会有所帮助,例如:
awk '/errorcode-024332/{f=1; print; next} /^###/{f=0} f' file会帮你找到errorcode-024332部分