我已经了解了比赛前后的grep
行以及grep
最后一场比赛,但我还没有发现如何grep
最后一场比赛以及下面的线路它
该方案是服务器日志。
我想列出命令的动态输出。该命令可能在一个服务器日志中多次使用。所以我想匹配将是命令,不知何故grep
可以使用-A
与其他标志或尾部命令的变体,来完成我正在寻找的结果。
答案 0 :(得分:11)
我会采取这种方法来解决问题,因为它更容易找到第一个匹配并打印上下文行。拿文件:
$ cat file
foo
1
2
foo
3
4
foo
5
6
假设我们想要foo
的最后一场比赛以及lines
的以下内容,我们可以使用tac
撤消该文件,找到上面的第一个匹配和n
行-Bn
并停止使用-m1
。然后使用tac:
$ tac file | grep foo -B2 -m1 | tac
foo
5
6
像tac
和rev
这样的工具可以让问题变得更加容易。
答案 1 :(得分:1)
使用awk代替:
awk '/pattern/{m=$0;l=NR}l+1==NR{n=$0}END{print m;print n}' foo.log
小测试,找到匹配/8/
的最后一行及其下一行:
kent$ seq 20|awk '/8/{m=$0;l=NR}l+1==NR{n=$0}END{print m;print n}'
18
19