我正在尝试在日志中搜索表达式,然后选择每个匹配项下方的行。
例子
我知道我想要 CommonText 下面的行,例如给定日志数据:
CommonTerm: something
This Should
random stuff
CommonTerm: something else
Be The
random stuff
more random stuff
CommonTerm: something else
Output Text
random fluff
期望的输出
This Should
Be The
Output Text
当前尝试
目前我可以grep log_file CommonTerm -B 0 -A 1
用来获得:
CommonTerm: something
This Should
--
CommonTerm: something else
Be The
--
CommonTerm: something else
Output Text
然后我可以通过管道| grep "\-\-" -B 0 -A 1
得到
This Should
--
--
Be The
--
--
Output Text
--
然后通过awk '{if (count++%3==0) print $0;}'
,给出:
This Should
Be The
Output Text
我的问题是:肯定有一个很好的“unix-y”方法来做到这一点?多 greps 和 hacky awk 感觉很傻……有吗?
编辑:我也试过:
(grep 'CommonTerm:' log_file -B 0 -A 2) | grep "\-\-" -B 1 -A 0 | grep -v "^--$"
但它似乎比预期的下面的答案更笨重;)
编辑:
有一些很好的答案,有什么可以让我轻松选择搜索词后的第 n行吗?我看到一些可能比其他人更容易......