使用grep或sed匹配2个连续的行

时间:2017-01-30 11:45:09

标签: sed grep

我刚刚花了几个小时尝试从控制台日志中检测我系统上的重置,我在那里:

Boot up message  // 1st console output on a boot
Shutdown message // Last console output on a CLEAN shutdown

通过在上面的2行使用grep,在控制台输出上,我的文本包含如下内容:

Boot up message
Shutdown message
Boot up message
Shutdown message
Boot up message
Boot up message
Shutdown message

通过2个连续的Boot消息可以检测到重置。我有几千个循环要经过,所以希望能够使用'-n'开关和grep来打印循环数字,给出类似的东西:

1:Boot up message
2-Shutdown message
3:Boot up message
4-Shutdown message
5:Boot up message
6:Boot up message  // reset occurred here
7-Shutdown message

如何使用sed / grep(在Cygwin中)只查找连续的Boot消息?

1 个答案:

答案 0 :(得分:0)

您可以使用此sed

sed -n 'N;/^\(Boot.*\)\n\1/=' file

(OR)

sed -n 'N;/^\(Boot.*\)\n\1/p' file

这将输出连续消息的行号。

<强>测试

$ cat file
Boot up message
Shutdown message
Boot up message
Shutdown message
Boot up message
Boot up message
Shutdown message

$ sed -n 'N;/^\(Boot.*\)\n\1/p' file
Boot up message
Boot up message