Раскрашивание разных фрагментов текста в одном выводе разными цветами

Существует хорошая часть кроссплатформенного бесплатного программного обеспечения под названием JDiskReport, которая включает в себя графический интерфейс для изучения того, что занимает все это пространство.

Пример скриншота:
JDiskReport screenshot

Конечно, вам нужно будет очистить немного места вручную, прежде чем вы сможете загрузить и установить его или загрузить его на другой диск (например, USB-накопитель).

2
27.04.2017, 10:31
2 ответа

Возможно, что-то вроде этого с awk работает для вас:

awk 'BEGIN{ce="\033[0m"}
     />>>/{cs="\033[1;31m"}
     /<<</{cs="\033[1;32m"}
     {print cs$0ce}' your.data

То есть:

BEGIN {
    ce = "\033[0m"
}
/>>>/ {
    cs = "\033[1;31m"
}
/<<</ {
    cs = "\033[1;32m"
}
{
    print cs $0 ce
}
2
27.01.2020, 22:03

В интересах семантических решений, полностью независимых от терминала, вот еще один способ задания цветов, использующий tput, который использует базу данных terminfo для предоставления правильная последовательность изменения цвета для любых терминалов, которые он распознает:

black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
off=$(tput sgr0)

echo ${red}some red text${blue} some blue text${green} and green${off} and back to normal.
1
27.01.2020, 22:03

Теги

Похожие вопросы