特定会话匹配后的x行grep

特定会话匹配后的x行grep,grep,sh,Grep,Sh,如何使用shell对特定会话、错误和错误后的所有其他内容进行grep,但不包括其他会话 下面是一个例子: Mon Jun 6 14:19:12 2011 (1307369952): Received from 10.25.68.106; Session:48090 Message : 0x300 (NDMP_TAPE_OPEN) Timestamp : 1307369953 XSequence : 6 RSequence : 0 Error : 0 (NDMP_NO_ERR)

如何使用shell对特定会话、错误和错误后的所有其他内容进行grep,但不包括其他会话

下面是一个例子:

Mon Jun  6 14:19:12 2011 (1307369952): Received from  10.25.68.106; Session:48090
Message   : 0x300 (NDMP_TAPE_OPEN)
Timestamp : 1307369953
XSequence : 6
RSequence : 0
Error     : 0 (NDMP_NO_ERR)
    Device : tape016
    Mode : 0 (Read Only)
我想用shell来grep Session:48090和这个Session的错误、设备和模式。 因此,我的输出应该是:

Error     : 0 (NDMP_NO_ERR)
Device : tape016
Mode : 0 (Read Only)
谢谢,
-Brian

使用
-A
参数包含匹配后的接下来7行,然后使用
tail
获取该输出的最后3行。例如:

grep -A 7 "Session:48090" file | tail -n 3

使用
-A
参数包括匹配后的下7行,然后使用
tail
获取该输出的最后3行。例如:

grep -A 7 "Session:48090" file | tail -n 3

如果您不知道“会话”行之后有多少行,但您知道您需要“错误”、“设备”和“模式”,您可以这样做:

sed -ne '/Session:48090/,/Session:/{/^[        ]*Error/p;/^[        ]*Device/p;/^[        ]*Mode/p}' your.file

每个方括号内都有一个空格和一个制表符。

如果您不知道“会话”行之后有多少行,但您知道您需要“错误”、“设备”和“模式”,您可以这样做:

sed -ne '/Session:48090/,/Session:/{/^[        ]*Error/p;/^[        ]*Device/p;/^[        ]*Mode/p}' your.file
每个方括号内都有一个空格和一个制表符