如何在grep导致bash之前/之后获取行?
嗨,我很新的bash编程。 我想要一种在给定的文本中search的方法。 为此,我使用grep函数: 
 grep -i "my_regex" 
 这样可行。 但是考虑到这样的data : 
 This is the test data This is the error data as follows . . . . . . . . . . . . . . . . . . . . . . Error data ends 
 一旦我find了单词error (使用grep -i error data ),我希望find单词error之后的10行。 所以我的输出应该是: 
  . . . . . . . . . . . . . . . . . . . . . . Error data ends 
有没有办法做到这一点?
 比赛前后可以使用-B和-A打印行。 
 grep -i -B 10 'error' data 
比赛前将打印10条线,包括匹配线本身。
这样做的方法是靠近手册页的顶部
 grep -i -A 10 'error data' 
尝试这个:
 grep -i -A 10 "my_regex" 
-A 10表示匹配后打印十行到“my_regex”
在匹配行后打印10行尾部上下文
 grep -i "my_regex" -A 10 
如果您需要在匹配行之前打印10行前导上下文,
 grep -i "my_regex" -B 10 
如果您需要打印10行的前导和尾随输出上下文。
 grep -i "my_regex" -C 10 
例
 user@box:~$ cat out line 1 line 2 line 3 line 4 line 5 my_regex line 6 line 7 line 8 line 9 user@box:~$ 
正常的grep
 user@box:~$ grep my_regex out line 5 my_regex user@box:~$ 
grep完全匹配的行和2行后
 user@box:~$ grep -A 2 my_regex out line 5 my_regex line 6 line 7 user@box:~$ 
精确匹配的行和2行之前
 user@box:~$ grep -B 2 my_regex out line 3 line 4 line 5 my_regex user@box:~$ 
grep精确匹配行和前后两行
 user@box:~$ grep -C 2 my_regex out line 3 line 4 line 5 my_regex line 6 line 7 user@box:~$ 
参考:manpage grep
 -A num --after-context=num Print num lines of trailing context after matching lines. -B num --before-context=num Print num lines of leading context before matching lines. -C num -num --context=num Print num lines of leading and trailing output context.