Как мне получить строки до / после результата grep в bash?
Привет я очень новичок в программировании bash. Я хочу способ поиска в данном тексте. Для этого я использую :
grep -i "my_regex"
это работает. Но, учитывая data такой :
This is the test data
This is the error data as follows
. . .
. . . .
. . . . . .
. . . . . . . . .
Error data ends
как только я нашел слово error ( через grep -i error data), Я хочу найти 10 строк, которые следуют за словом error. Поэтому мой вывод должен быть:
. . .
. . . .
. . . . . .
. . . . . . . . .
Error data ends
есть ли способы сделать это?
4 ответов:
можно использовать
-Bи-Aдля печати строк до и после матча.grep -i -B 10 'error' dataнапечатает 10 строк перед матчем, включая саму совпадающую строку.
это печатает 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:~$Grep точные совпадающие строки и 2 строки перед
user@box:~$ grep -B 2 my_regex out line 3 line 4 line 5 my_regex user@box:~$Grep точные совпадающие строки и 2 строки до и после
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.
попробуйте это:
grep -i -A 10 "my_regex"- A 10 означает, вывести десять строк после совпадения с "my_regex"
Comments