Модифицируйте терминал STDOUT / STDERR, чтобы изменить цвет линии на основе REGEX.

305
igniteflow

Это возможно? Чего я хотел бы добиться, так это запускать модульные тесты (Python), чтобы выделить любую строку, которая соответствует пути к текущему каталогу проекта, и оставить другой вывод без изменений. Обычно это строка, которую я ищу, поэтому она будет очень полезна для целей отладки. Часть с шаблоном соответствия должна быть в порядке, я просто не знаю, как можно изменить вывод (тесты выполняются с Nose)

0

1 ответ на вопрос

1
user49740

Вы можете передать свою команду через grep -C10000 -P --color pattern(или, в вашем конкретном случае, grep -C10000 -P --color ".*$PWD.*").

Например:

cat /proc/cpuinfo | grep -C10000 -P --color 'GHz|MHz' 
  • Да, это бесполезное использование кошки.
  • -C10000говорит grep напечатать 10000 строк контекста. Используйте достаточно большое число, чтобы grep печатал все строки
  • Используйте, |&если вы хотите также захватить STDERR
Возможно, вам понадобится сопоставить `" ^. * $ PWD /.*$ "`, если вы хотите выделить всю строку, содержащую текущий каталог. AFH 8 лет назад 1
Правильно, ответ обновлен. Однако нет необходимости в `^` и `$`. Я также удалил последний слэш. user49740 8 лет назад 0
Вы также можете использовать `egrep --color" $ | ^. * $ PWD /.*$ "` для grep всех строк, чтобы избежать использования -C10000. Таким образом, `egrep` найдет все строки и выделит найденные совпадения. Но так как EOL ($) не «виден», окрашивается только фактический шаблон поиска. Lambert 8 лет назад 2