给定一个包含“打印数据”的日志文件,该文件可能跨越多行,然后出现错误,例如:
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
确定导致错误的“打印”行
我该怎么办?
答案 0 :(得分:1)
您可以使用awk
执行此操作:
awk '$1=="print"{printBuffer=$0} $1=="error"{print printBuffer}' yourfile
这会将每个记录拆分为空格字符(默认为awk)。如果记录的第一个字段是" print"它将整个记录($0
)存储在变量printBuffer
中。如果第一个字段是"错误",则它会打印printBuffer
中的任何内容,这是在遇到错误之前遇到的最后一条print
行。