我有一个日志文件包含启动和关闭每天的次数。
我想查看启动和关闭的最后一个模式(位于每天更新的文件的末尾)。
另外,我不需要启动和关闭之间的所有行。我只想要上次启动后的几行(假设为 3 行)和上次关闭后的几行(假设为 3 行)。
对于单线有什么建议吗?
答案1
如果您不介意将日志文件的(提取的)行反转两次,则可以使用sed
和的组合(请参阅grep
如何反转文件中的行?)。
# test case
echo '
startup 1
shutdown 1
startup 2
shutdown 2
startup 3
line 1
line 2
line 3
line 4
line 5
shutdown 3
line 1
line 2
line 3
line 4
line 5
' |
tail -r | sed -n -e '1,/startup/p' | tail -r | grep -E -A 3 '(startup|shutdown)'
# output
startup 3
line 1
line 2
line 3
--
shutdown 3
line 1
line 2
line 3
答案2
尝试使用 grep 代替 sed wit 选项“--after-context”。
例子:
cat logfile | grep --after-context=3 startup