Я хотел бы выполнить поиск вхождения в текстовом файле, а затем распечатать следующие N строк после каждого найденного вхождения. Есть идеи?
источник
Я хотел бы выполнить поиск вхождения в текстовом файле, а затем распечатать следующие N строк после каждого найденного вхождения. Есть идеи?
Grep имеет следующие параметры, которые позволят вам сделать это (и тому подобное). Возможно, вы захотите взглянуть на справочную страницу для получения дополнительной информации:
-A num Печатать num строк конечного контекста после каждого совпадения. Смотрите также параметры -B и -C.
-B num Печатать количество строк переднего контекста перед каждым совпадением. Смотрите также параметры -A и -C.
-C [num] Вывести num строк начального и конечного контекста, окружающих каждое совпадение. По умолчанию 2 и эквивалентно -A 2 -B 2. Примечание: между опцией и ее аргументом не должно быть пробелов.
Если у вас есть GNU grep
, это опция -A
/ --after-context
. В противном случае вы можете сделать это с awk
.
awk '/regex/ {p = N}
p > 0 {print $0; p--}' filename
awk '/regex/{p=2} p > 0 {print $0; p--}' filename
- работает, твой нет.Используйте
-A
аргумент, чтобыgrep
указать, сколько строк за пределами соответствия вывести.источник
Вывести N строк после совпадения строк
Вы можете использовать
grep
с-A n
опцией для печати N строк после сопоставления строк.Например:
Другие связанные варианты:
Вывести N строк перед соответствием строк
Используя
-B n
опцию, вы можете напечатать N строк перед соответствием строк.Вывести N строк до и после соответствия строк
Используя
-C n
опцию, вы можете напечатать N строк до и после соответствия строк.источник