Возможный дубликат:
Как вывести 2 или 3 строки, одна из которых содержит нужный текст, а остальные чуть ниже?
Скажем, у меня есть файл. Я хочу найти определенное слово в этом файле и показать строку.
Есть ли способ сделать вышеописанное, но также включить выше и ниже 10 строк из строки результата?
Как я могу сделать это с помощью командной строки Linux?
Предположим, что Ваш файл называют filename
, Ваше регулярное выражение foo
, и Вы хотите распечатать согласующие отрезки длинной линии и строки в 10 строках (выше и ниже) согласующие отрезки длинной линии:
grep -C10 foo filename
В более общем плане, для n
строки прежде и после соответствий:
grep -Cn foo filename
Это решение будет работать с GNU grep (который Ubuntu и примерно любая основанная на Linux операционная система имеет). -C
флаг не обязательно поддерживается всего grep
реализации, все же.
Для печати строк только прежде или только после соответствий используйте -Bn
или -An
переключатели соответственно, где n
количество строк, которые Вы хотите прежде или после. Для получения дополнительной информации об альтернативном способе сделать это, посмотрите этот связанный вопрос (благодарность fossfreedom для того, чтобы замечать подобие).