Выделите вывод консольного поиска, отображая весь вывод команды

Когда я использую, например, cat file.txt | grep --color=tty "pattern" cat file.txt | grep --color=tty "pattern" Я получаю шаблон, который я ищу, выделен. Когда я хочу еще немного контекста вокруг каждого попадания, grep имеет параметры -A , -B и -C .

Тем не менее, я хочу отобразить весь файл (или любой другой вывод команды) и выделить определенный шаблон. Существует ли такая команда или инструмент выделения?

На unix.stackexchange.com был ответ, в котором был этот опрятный трюк:

 grep -E --color 'pattern|$' file.txt 

или

 grep --color 'pattern\|$' file.txt 

Который соответствует вашему шаблону или концу строки в каждой строке. Выделяется только шаблон.

Мне нравится ак .

 ack --passthru somepattern filename 

Это похоже на grep, но лучше. Он выделяется по умолчанию, а с параметром --passthru он отображает весь файл (или стандартный ввод), а не только соответствующие строки.

Я также рекомендую использовать less (или такое), но я хочу показать вам более дидактическое решение. После того, как вы определили эту функцию:

 Подсветка функции ()
 {
     Sed "s / $ 1 /` tput smso` & `tput rmso` / g" "$ {2: -}"
 }

Вы можете использовать его так:

 command | highlight pattern highlight pattern file.txt 

Примечание. Эта версия чувствительна к регистру, чтобы изменить это, просто добавив i после g в выражении sed .

Передача -C в grep с достаточно высоким значением сделает это.

less выделяется шаблон, поэтому

 less -p 'mypattern' file.txt 

или

 ridiculously | long | pipe | less 

А затем меньше / для поиска шаблона, который будет выделен.

Примечание:

Вы можете улучшить свою команду, например
Set alias alias grep="grep --color=tty" и использовать его так:

 grep 'mypattern' file.txt; 
  • Win7 не может спать из-за GRUB
  • Как добавить в файл как sudo?
  • Обратное мультиплексирование для ускорения передачи файлов
  • Может ли Windows использовать оболочку Linux вместо cmd?
  • Ускорение видео в Linux
  • Tail -f не отслеживать изменения файла
  • Как мне зашифровать всю файловую систему Linux с помощью Veracrypt?
  • Очищенный или неформатированный раздел в GParted
  • Linux снимок экрана, который сохраняет снимки напрямую, не запрашивая имя файла
  • Преобразование CRLF в линейные каналы в Linux
  • Fsck error: в настоящее время поддерживается только 1 или 2 FAT, а не 34
  • Давайте будем гением компьютера.