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

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

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

  • Как получить количество кадров в видео в командной строке linux?
  • Синтаксис перенаправления пакетного сценария
  • Проверка использования пропускной способности конкретного приложения или процесса в Windows 7
  • Командная строка SVG и просмотрщик файлов изображений в Linux?
  • Запустите приложение GUI на удаленном компьютере с SSH
  • Командная строка Commmand для копирования всего каталога (включая папку каталога) в другой каталог
  • Как заставить Zsh не сохранять неудачную команду
  • Как создать 1 ГБ случайный файл в Linux?
  • См. Доступные диски из Windows CLI?
  • Как мне сопоставить долю сети с помощью терминала Linux?
  • Avahi: ping не может разрешить имя хоста, но nslookup может
  • OS X: кодировка Base64 через командную строку
  • 5 Solutions collect form web for “Выделите вывод консольного поиска, отображая весь вывод команды”

    На 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; 
    Давайте будем гением компьютера.