Привет, у меня есть файл журнала, в котором много информации, и довольно сложно определить, что я ищу, поэтому я пришел к этой команде, которая показывает мне только то, что я хочу видеть в журнале, она будет действовать как прослушиватель, когда шаблон совпадает, показывая мне только результаты поиска.
tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\""
И работает нормально, проблема в том, что если я передам еще один grep
tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"jsonKeyOne\"" | GREP_COLOR='01;31' egrep --color=always "\"jsonKeyTwo\""
Я думаю, что это не работает, потому что когда я передаю одно в другое, поскольку результат первого не содержит условия второго, ничего не отображается, поэтому я хочу, чтобы оба (или более) grep обрабатывали весь файл и просто присваивали каждой строке разный цвет, чтобы было легче заметить разницу.
ПРИМЕЧАНИЕ. Если я добавлю :|$ в конец, он будет действовать как обычный хвост и покажет мне много дополнительной информации, которая мне не нужна.
tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\":|$"
решение1
Предпочтительно использовать:
grep -e 'jsonKeyOne' -e 'jsonKeyTwo'
…to OR ваши термины. В зависимости от вашего варианта grep также возможно -E 'jsonKeyOne|jsonKeyTwo'. Это самый быстрый вариант только с терминами.
Различные цвета работают следующим образом: окрашен только первый член, а все остальные линии неокрашены, следующий член окрашен другим цветом и все остальные линии тоже... пока последний член не окрашен своим цветом и также всеми остальными линиями.
Либо grep, либо подсветка синтаксиса, но лучше не оба сразу.