比如说下面这段示例文本,我现在要通过 disconnected 关键字找到指定行,再向上获取时间,现在我是这么写的 grep -B 5 disconnected
,也就是说行数是固定的,有问题,我现在要从指定行向上找,只要找到时间行就不再找了,应该怎么实现呢?求教~
Thu Jun 30 15:26:07 2016
FdManager: End of stream
FdManager: End of stream
FdManager: End of stream
FdManager: End of stream
FdManager: End of stream
Thu Jun 30 15:51:36 2016
Connections: disconnected: 10.0.30.171::58800 (Idle timeout)
FdManager: Listener not registered
Thu Jun 30 15:53:04 2016
Connections: disconnected: 10.0.30.171::58811 (Idle timeout)
rvnExt: notifyNewConnection - 0x2d044d0, 0
知不知道为什么没人回答你?
你不知道用管道吗?
.......|grep -A ......|grep -B ......
当然,要完全精确实现你说的功能,perl/awk,不过显然需要对正则和相关语法相当熟悉才能自己写出来,你一时半会还搞不定。
正则工具学习次序(复杂度递增):
grep/egrep/fgrep/ack ->
sed/ed/vim ->
awk/perl