grep на цветных линиях - PullRequest
3 голосов
/ 08 июня 2011

Я написал простой скрипт оболочки PHP, который анализирует файлы и выводит определенный элемент.
Он генерирует много выходных данных.Различные цвета (bash), зеленый для OK, желтый для предупреждений, красный для ошибок и т. Д.

Во время разработки я хочу отфильтровать некоторые строки.Например, все строки, содержащие красный текст.

Можно ли использовать для этого команду grep (или другую)?

Ответы [ 2 ]

6 голосов
/ 08 июня 2011

Я понятия не имею, как выглядит ваш ввод, но в качестве подтверждения концепции вы можете отфильтровать любые строки в выводе ls, которые используют зеленый цвет:

ls --color=always | grep '^[\[01;32m'

Таблица поиска для других цветов может быть найдена здесь: http://en.wikipedia.org/wiki/ANSI_escape_code#Colors

Подсказка : В случае, если вы не знали, указанную выше часть ^[ следует вводить как Ctrl-V Esc (или даже * 1015) * Ctrl-V Ctrl - [ на большинстве терминалов). Я уверен, что будет какая-то опция для grep, чтобы она вместо этого поняла \x1B, но я ее не нашла

0 голосов
/ 08 июня 2011

Насколько я понимаю, вы разбираете вход один раз, чтобы все равно его раскрасить, верно?Почему бы не вырезать предупреждения / ошибки в одной и той же функции?Сделайте так, чтобы ваш скрипт использовал параметры командной строки, например myscript --nowarnings

Здесь есть getopt для учебника по PHP здесь

Я не знаю ни одного php, но что-то вроде(псевдокод):

paintred(string, show){
    match(string);
    if(show){
        print(string) in red;
    }
    else return 0;
}

Где show будет зависеть от параметра командной строки.

Таким образом, вы только один раз проанализируете файл и дадите будущим пользователям возможность пропустить OK.строки или предупреждения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...