UNIX命令查找日志特定字符串附近的最后一个occerrence字符串

时间:2016-06-29 16:49:44

标签: unix awk sed grep

给定一个包含“打印数据”的日志文件,该文件可能跨越多行,然后出现错误,例如:

print some data 1
print some data 2
print some data 3
data 3-1
data 3-2
error
print some data 4
print some data 5 

我想找到任何有错误的日志条目,例如:

print some data 3
data 3-1
data 3-2
error

确定导致错误的“打印”行

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以使用awk执行此操作:

awk '$1=="print"{printBuffer=$0} $1=="error"{print printBuffer}' yourfile

这会将每个记录拆分为空格字符(默认为awk)。如果记录的第一个字段是" print"它将整个记录($0)存储在变量printBuffer中。如果第一个字段是"错误",则它会打印printBuffer中的任何内容,这是在遇到错误之前遇到的最后一条print行。