Используя grep, вы можете печатать строки, соответствующие вашему поисковому запросу. Добавление -C
варианта будет печатать две строки окружающего контекста, например:Используйте grep для печати только контекста
> grep -C 2 'lorem'
some context
some other context
**lorem ipsum**
another line
yet another line
Кроме того, вы можете использовать grep -B 2
или grep -A 2
напечатать соответствующие линии с двумя предыдущими или следующими двумя линиями, соответственно, к примеру:
> grep -A 2 'lorem'
**lorem ipsum**
another line
yet another line
Можно ли пропустить соответствующую строку и распечатать только контекст? В частности, я хотел бы только напечатать строку, которая находится ровно 2 линии выше матча, как это:
> <some magic command>
some context
Не в 'grep', о котором я знаю. Используйте 'awk', как в этом: [печать с sed или awk строка, соответствующая шаблону соответствия) (http://stackoverflow.com/a/17914105/1983854) – fedorqui
@fedorqui это работает для следующих строк, но могу ли я изменить чтобы получить предыдущие строки? никогда не использовал awk раньше. – rrrafalsz
Используйте 'tac', чтобы распечатать файл назад. – fedorqui