Ответ 1
Вы можете использовать -B
и -A
для печати строк до и после матча.
grep -i -B 10 'error' data
Будут напечатаны 10 строк перед совпадением, включая собственно совпадающую строку.
Привет, я очень новичок в программировании bash. Я хочу, чтобы искать в данном тексте. Для этого я использую функцию grep
:
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
Есть ли способы сделать это?
Вы можете использовать -B
и -A
для печати строк до и после матча.
grep -i -B 10 'error' data
Будут напечатаны 10 строк перед совпадением, включая собственно совпадающую строку.
Способ сделать это находится рядом с верхней частью страницы man
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
Пример
[email protected]:~$ cat out
line 1
line 2
line 3
line 4
line 5 my_regex
line 6
line 7
line 8
line 9
[email protected]:~$
Обычный grep
[email protected]:~$ grep my_regex out
line 5 my_regex
[email protected]:~$
Точные совпадающие строки Grep и 2 строки после
[email protected]:~$ grep -A 2 my_regex out
line 5 my_regex
line 6
line 7
[email protected]:~$
Точные совпадающие строки Grep и две строки перед
[email protected]:~$ grep -B 2 my_regex out
line 3
line 4
line 5 my_regex
[email protected]:~$
Точные совпадающие строки Grep и 2 строки до и после
[email protected]:~$ grep -C 2 my_regex out
line 3
line 4
line 5 my_regex
line 6
line 7
[email protected]:~$
Ссылка: 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.