我有一个充满查询的日志文件,我只想查看有错误的查询。日志条目类似于:
path to file executing query
QUERY
SIZE: ...
ROWS: ...
MSG: ...
DURATION: ...
我想打印所有这些东西,但前提是 MSG:
包含一些有趣的东西(错误消息)。我现在得到的只是 sed -n '/^path to file/,/^DURATION/'
我不知道从这里到哪里去。
注意:查询通常是多行的,所以遗憾的是使用 grep 的 -B
并不总是有效(这是我到目前为止一直在做的,只是慷慨地使用 -B
值)
不知何故,我只想使用 sed
,但如果我绝对必须使用其他东西,比如 awk
,我想那很好。
谢谢!
最佳答案
您还没有说明错误消息是什么样的,所以我假设它包含“ERROR”这个词:
sed -n '/^MSG.*ERROR/{H;g;N;p;};/^DURATION/{s/.*//;h;d;};H' < logname
(我希望有一种更简洁的方法来清理存放空间。有人吗?...)
关于linux - 当模式在范围内时使用 sed 打印范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5341158/