Привет, я очень новичок в программировании 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
Есть ли способы сделать это?
error
.Ответы:
Вы можете использовать
-B
и-A
для печати строк до и после матча.Напечатает 10 строк до начала матча, включая саму строку соответствия.
источник
test=$(grep -i -B 10 'error' data)
, и распечатать его, используяecho $test
, я получаю прямые длинные строки в качестве вывода.echo "$test"
а неecho $test
-C 10
распечатает 10 строк до и после одним махом!Это печатает 10 строк конечного контекста после сопоставления строк
Если вам нужно напечатать 10 строк переднего контекста перед соответствием строк,
А если вам нужно вывести 10 строк начального и конечного выходного контекста.
пример
Нормальный grep
Grep точное совпадение строк и 2 строки после
Grep точное соответствие строк и 2 строки перед
Grep точное соответствие строк и 2 строки до и после
Ссылка: manp grep
источник
Способ сделать это в верхней части справочной страницы
источник
Попробуй это:
-A 10 означает, вывести десять строк после совпадения в «my_regex»
источник