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

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

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

  • Как отключить команду kill на linux
  • Cd (сменить каталог) в мой домашний каталог на Windows
  • Есть ли эквивалент Windows для команды «strings» Unix?
  • Почему dd копирует только 128 байтов из / dev / random, когда я запрашиваю больше?
  • Измените размер командной строки командной строки Windows?
  • Есть ли более, более UNIX-подобная оболочка командной строки для Windows?
  • Как скопировать текст в командной строке Windows «cmd»?
  • Как удалить файл с именем «-p» из bash?
  • Инструмент для создания кнопок fn-x? Archlinux, handler.sh
  • Запуск перфоратора без прав root
  • Должен ли я отформатировать USB-накопители и SD-карты в FAT, FAT32, exFAT или NTFS? (Файлы Windows, живые Linux-искатели)
  • Как найти MAC-адрес моего компьютера?
  • 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; 
    Давайте будем гением компьютера.