9

в bash, если я хочу выполнить команду и отображать только выходные строки, которые соответствуют определенному шаблону, я могу передать ее по grep , например

файл тестового файла

hello
there
my
friends

команда

$ cat testfile | grep 'hello'
hello #this will be highlightd

это выделит искомое совпадение и отобразит всю строку, на которую оно попадает. Я могу использовать -A и -B для отображения строк до и после этой строки. Мой вопрос заключается в том, можно ли выполнить команду и отобразить все выходные данные в обычном режиме, но выделять результаты поиска, как это делает grep? так что мой выход будет

hello #highlighted
there
my
friends

2 ответа2

12

Добавьте опцию -z к вашей команде GNU grep:

cat testfile | grep --color=always -z 'hello'

или короче

grep --color=always -z 'hello' testfile
8

Чтобы использовать Color GREP только для выделения совпавших рисунков, но не для изменения выходных данных:

grep --color=always -e "^" -e "hello" testfile

Первый шаблон будет соответствовать всем строкам (будут напечатаны все строки), а второй шаблон (и любые последующие шаблоны) приведет к тому, что соответствующий текст будет выделен цветом.

Поскольку первый шаблон соответствует всем строкам, но не соответствует печатному символу, он не добавляет никакой цветовой подсветки, поэтому он не конкурирует / не мешает удобочитаемости выделенного текста.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .