关于linux:如何让grep打印每条匹配行下方和上方的行?

How can I make grep print the lines below and above each matching line?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
grep a file, but show several surrounding lines?

我必须解析一个非常大的文件,我想使用命令grep(或任何其他工具)。

我想在每个日志行中搜索单词FAILED,然后在每个匹配行的上方和下方打印该行,以及匹配行。

例如:

1
2
3
id : 15
Satus : SUCCESS
Message : no problem
1
2
3
id : 15
Satus : FAILED
Message : connection error

我需要打印:

1
2
3
id : 15
Satus : FAILED
Message : connection error

grep的-A 1选项会给你一行; -B 1之前会给你一行; 并且-C 1将两者结合起来,在前后都给你一行,-1也是如此。


使用-B,-A或-C选项

1
2
3
4
5
6
7
grep --help
...
-B, --before-context=NUM  print NUM lines of leading context
-A, --after-context=NUM   print NUM lines of trailing context
-C, --context=NUM         print NUM lines of output context
-NUM                      same as --context=NUM
...


使用-A和-B开关(意思是后面的行和后面的行):

1
grep -A 1 -B 1 FAILED file.txt