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

0

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

igniteflow
источник

Ответы:

1

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

Например:

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