grep用于特定会话匹配后的x#行

时间:2011-06-06 19:24:35

标签: 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)
    Device : tape016
    Mode : 0 (Read Only)

我想使用shell grep Session:48090以及此会话的错误,设备和模式。 所以我的输出应该是:

Error     : 0 (NDMP_NO_ERR)
Device : tape016
Mode : 0 (Read Only)

谢谢, -Brian

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

如果您不确切知道“会话”行之后有多少行,但您确实知道需要“错误”,“设备”和“模式”,则可以执行以下操作:

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

每个方括号内都有一个空格和一个标签。