cod*_*ala 5 linux command-line sed
我有一个充满查询的日志文件,我只想查看有错误的查询。日志条目类似于:
path to file executing query
QUERY
SIZE: ...
ROWS: ...
MSG: ...
DURATION: ...
Run Code Online (Sandbox Code Playgroud)
我想打印所有这些东西,但只有在MSG:
包含感兴趣的东西时(错误消息)。我现在所拥有的只是sed -n '/^path to file/,/^DURATION/'
,我不知道从哪里开始。
注意:查询通常是多行的,所以-B
很遗憾地使用 grep并不能一直工作(这是我迄今为止一直在做的事情,只是对-B
价值大方)
不知何故,我只想使用sed
,但如果我绝对必须使用其他类似的东西,awk
我想那很好。
谢谢!
您还没有说明错误消息是什么样的,所以我假设它包含“错误”一词:
sed -n '/^MSG.*ERROR/{H;g;N;p;};/^DURATION/{s/.*//;h;d;};H' < logname
Run Code Online (Sandbox Code Playgroud)
(我希望有一种更整洁的方式来清理货舱空间。有人吗?...)