список цветов в общем виде - PullRequest
0 голосов
/ 19 октября 2018

Я подумал, что это может быть легко, но не так много

Я хочу раскрасить вывод команды на основе разделителей, в моем случае

apt-show-versions -u

и хотите раскрасить имена пакетов, основываясь на разделителе двоеточия или на слове «to».Кажется, он хочет получить анализатор, а не фильтр.

с использованием цвета xterm в Linux и PuTTY

1 Ответ

0 голосов
/ 19 октября 2018

Другие заинтересованы в аналогичной функциональности , я предлагаю вам проверить упомянутые там инструменты (grc / grcat).

Возможно, вам удастся скрытьсяхотя с магией седа.Я не уверен, что именно вы хотите раскрасить, и при этом я не знаю, как выглядит вывод apt-show-version, но это окрашивает все, что предшествует двоеточию и слову "to":

cat << EOF | sed -e "s/^[^:]*/\x1b[31m&\x1b[0m/g" | sed -e "s/to/\x1b[31m&\x1b[0m/g"
foo: 1 to 2
bar: 3 to 4
quux: 5 to 6
EOF

Вы можете вставить это в терминал и посмотреть, если это то, что вы ищете.По сути, он ищет вхождения регулярных выражений и окружает его цветовыми кодами ANSI:

  • s/X/Y&Y/g: замените X на окружение Y во всем входном сигнале (флаг g)или, цитируя man sed:

    s/regexp/replacement/
           Attempt to match regexp against the pattern space.  If  success‐
           ful,   replace  that  portion  matched  with  replacement.   The
           replacement may contain the special character & to refer to that
           portion  of  the  pattern  space  which matched, and the special
           escapes \1 through \9 to refer  to  the  corresponding  matching
           sub-expressions in the regexp.
    
  • ^[^:]*: с начала строки сопоставляйте все, пока не встретите :

  • \x1b: Hex 27, escape-последовательность ( см. Здесь! )
  • [31m: цветовой код ANSI для красного
  • [0m: цвет ANSIкод для «возврата к нормальному выводу»

Во всяком случае, этот пост научил меня, что sed захватывает совпадения в & ;-) Надеюсь, вы тоже кое-что поняли!

...