Я запускаю некоторый код модульного теста. Код модульного теста выводит обычный текст. Здесь много текста, поэтому я хочу выделить для пользователя важные ключевые слова.
В этом случае ключевыми словами являются «PASS» и «FAIL».
Как вы окрашиваете «PASS» в зеленый и «FAIL» в красный?
bash
shell-script
scripting
colors
Тревор Бойд Смит
источник
источник
Ответы:
supercat
кажется, делает то, что вы ищете.Кажется, нет никакого способа сказать ему, что окрашивать в командной строке, вы должны указать файл конфигурации.
Кажется, я вспоминал, что раньше была программа под названием «hilite» или «hl», которая выделяла текст, который соответствовал шаблону (например
grep --colour
, но отображал также несоответствующие строки), но я не мог найти его, когда искал его.Наконец, GNU
grep
можно использовать для выделения шаблонов, но можно использовать только один цвет (т. Е. У вас не может быть PASS в зеленом и FAIL в красном, оба будут выделены одним и тем же цветом).Передайте данные через что-то вроде этого:
В этом примере используется egrep (aka
grep -E
), но также работают-G
базовые регулярные выражения,-F
fixed-string и-P
PCRE.Все совпадения будут выделены. По умолчанию красный или установите GREP_COLOR env var.
Ключом к этой работе является то, что финал
|$
в шаблоне соответствует концу строки (т.е. все строки совпадают), поэтому все строки будут отображаться (но не раскрашиваться).Это
\b
маркеры границы слова, так что они соответствуют, например, FAIL, но не FAILURE. они не нужны, поэтому удалите их, если вы хотите сопоставить отдельные слова.Вот пример скрипта-обёртки для supercat, который я написал вчера. Это работает, но при написании этого я обнаружил, что у supercat нет возможности поиска без учета регистра. ИМО, что делает программу значительно менее полезной. Однако это значительно упростило сценарий, поскольку мне не нужно было писать опцию '-i' :)
источник
supercat
вы можете изменить скрипт, который вы разместили, чтобы создать временный файл конфигурации на основе аргументов командной строки, а затем вызватьspc -c /path/to/your/temp/config
. Это позволит вам легко указывать разные цвета для разных шаблонов в командной строке.Вот скрипт общего назначения для раскрашивания шаблонов регулярных выражений (вероятно, требуется некоторая ретушь):
Назовите это
hilite.sh
и используйте это так:источник
community wiki
потому что мое решение не работает.$BIN
viaeval
на подстановку команд, вероятно, хрупок, громоздок и совершенно опасен. STDOUT - это поток и обычно предназначен для обработки потоковыми инструментами. Попытка перехватить весь поток в переменной не очень эффективна. Кроме того,eval
это опасно мощно , поэтому используйте его, только если вы действительно знаете, что делаете.Встраивание произвольных строк (например,
tput
выходных данных) вsed
выражения замены проблематично, потому что вы должны убедиться (путем экранирования), что строка является допустимымsed
синтаксисом, а это более сложная задача, которую лучше избегать. Я бы использовалawk
вместо этого. Просто в качестве примера:Ключ заключается в том, чтобы назначить
tput
последовательностиawk
переменным, что делается здесь с помощью-v
параметров.источник
awk
Сценарий состоит из набора блоков (материал между{}
на уровне верхнего). Каждый блок связан с условием - в моем посте выше его нет, потому что я хочу безоговорочно действовать на каждую строку ввода. Awk работает путем чтения записей из файлов или стандартного ввода (в данном случае это STDIN, поскольку имена файлов не были предоставлены), и сопоставляет их с каждым блоком по порядку, выполняя блок в записи, если условие соответствует.используйте printf:
например.
последний
\n
добавляет символ новой строки.чтобы увидеть возможные значения попробуйте что-то вроде:
Помимо цвета вы можете добавить модификаторы, такие как жирный или подчеркнутый или цветной текст с цветным фоном, комбинируя числа. Чтобы создать синий текст с серым фоном, который подчеркнут и вычеркнут с помощью:
Ура,
/ B2S
источник
Если вы готовы установить скрипт BASH и
ack
,hhlighter
пакет имеет полезные цвета по умолчанию и простой интерфейс https://github.com/paoloantinori/hhighlighter :Вы можете использовать его так, чтобы выделить строки, начинающиеся с
FAIL
:или которые содержат
FAIL
:или для различных общих записей журнала:
И конечно, для одного цвета (красного) с простым grep:
Соответствует
^
каждой строке, но является специальным сопоставителем и печатает всю строку. Выражение, которое нужно выделить, определяется после a|
. Дальнейшие выражения могут быть добавлены, если они разделены|
.источник