Отобразить несколько строк перед выбранным словом - PullRequest
0 голосов
/ 06 сентября 2011

Следующая команда корректно возвращает все строки с предупреждениями больше 0 из всех файлов.

grep -i warning * | grep -v 'Warnings: 0' | more

Я хочу видеть 4 строки над строкой предупреждений, где предупреждение больше 0. The -Переключатель B4 не работает по понятным причинам.

Ответы [ 3 ]

2 голосов
/ 06 сентября 2011

Если я правильно понял ваш вопрос, вот решение:

grep -v "Warnings: 0" * | grep -B4 -i warning
1 голос
/ 06 сентября 2011

Как насчет использования небольшого регулярного выражения вместо:

grep -e "Warnings: [1-9][0-9]*" -B4 * | more

grep должен найти 1 или более предупреждений и напечатать предыдущие 4 строки.

0 голосов
/ 06 сентября 2011

Вам неясно, должно ли предупреждающее сообщение быть включено в вывод или нет.В этой версии это.

Попробуйте:

awk -F"[: ]" '($1  /Warning/ && $2> 0){a[NR]=$0;for (i=4;i>=0;i--) \
            print a[NR-i]}{a[NR]=$0}' file

HTH Крис

...