Когда я использую, например, cat file.txt | grep --color=tty "pattern"
я получаю выделенный шаблон поиска. Когда я хочу немного больше контекста вокруг каждого удара, Grep имеет -A
, -B
и -C
параметры.
Однако я хочу отобразить весь файл (или любой вывод команды) и выделить определенный шаблон. Существует ли такая команда или инструмент выделения?
linux
command-line
DerMike
источник
источник
Ответы:
На unix.stackexchange.com был ответ, в котором был такой хитрый трюк:
или
который соответствует вашему шаблону или концу строки в каждой строке. Только шаблон выделен.
источник
GREP_OPTIONS='--color'
в свой~/.bashrc
(или измените настройку, чтобы включить--color
). Вам нужно будет запустить новый терминал или выполнить это назначение в командной строке текущего терминала, чтобы оно вступило в силу.Мне нравится Ack .
Это как grep, но лучше. По умолчанию он подсвечивается, а с помощью
--passthru
опции он показывает весь файл (или стандартный ввод) вместо только совпадающих строк.источник
tail
, то вам также нужно использовать эту--filter
опцию. Например:tail -f myLogFile | ack --filter --passthru pattern
Я также рекомендую использовать
less
(или такое), но я хочу показать вам более дидактическое решение. Как только вы определили эту функцию:Вы можете использовать это так:
Примечание: Эта версия является чувствительным к регистру, чтобы изменить это просто добавить
i
после того, какg
вsed
выражении.источник
tput
вместо жесткого кодирования значений. Таким образом, вы также избегаете использованияecho -e
, которое может иметь другие эффекты.prog | highlight "pattern"
илиhighlight "pattern" file
:highlight () { local file=${2:--}; sed "s/$1/$(tput smso)&$(tput rmso)/gi" "$file"; }
sed
навыки в основном не существуют. Как бы мне пришлось изменить это, чтобы соответствовать шаблону с учетом регистра. В любом случае, я добавлю это в мои функции bash_functions. Большое спасибо.Переход
-C
кgrep
достаточно высокому значению сделает это.источник
less
выделяет рисунок, такили
а затем меньше
/
искать шаблон, который будет выделен.Примечание:
Вы можете улучшить свою команду, например,
установить псевдоним
alias grep="grep --color=tty"
и использовать ее так:источник
grep
(zgrep, bzgrep, bzfgrep и т. Д.). Таким образом, если вы хотите, чтобы все формы grep вели себя согласованно, вам необходимо установить псевдоним для каждой формы grep. Новый ответ @ Casual выше неbzgrep pattern /var/log/messages.?.gz
подходит для чего-то подобного , это пример, где цветовая подсветка ОЧЕНЬ полезна.Есть хороший инструмент SuperCat , который служит именно для этой цели. Он может как раскрасить вывод вашей консоли, так и создать «выделенный» HTML из вашего ввода.
источник
/etc/supercat
Ubuntu), которые устанавливают правила раскраски, в основном это пары color / regexp (с некоторыми дополнительными правилами); Страница man также короткая и приятная.spcrc
файл синтаксиса vim по адресу vim.org/scripts/script.php?script_id=2676