, поэтому я распечатываю (эхо) 7 переменных (строк) разной длины и передаю их в awk, чтобы они были хорошо выровнены.Каждое поле имеет различную длину поля.
Пример:
$ echo "one MISSING three four five six seven" | awk '{printf "%-17s %-29s %-22s %-25s %-12s %-11s %-25s\n", $1, $2, $3, $4, $5, $6, $7}'
one MISSING three four five six seven
Но .. бывают случаи, когда скрипт, который генерирует эти переменные, не имеет реального значения, поэтому я заполняюих со строкой "MISSING".
Я бы хотел, чтобы awk напечатал строку MISSING красным цветом ... эта строка может быть в любом поле.
Я сделал это:
echo "one MISSING three four five six seven" | awk '{gsub(/MISSING/,"\033[0;31m&\033[0m\t");printf "%-17s %-29s %-22s %-25s %-12s %-11s %-25s\n", $1, $2, $3, $4, $5, $6, $7}'
one MISSING three four five six seven
и оно красиво печатает красным цветом слово MISSING, но оно портится с выводом, поля больше не выровнены.Поэтому, когда читается больше записей (для цикла), вывод больше не выравнивается.Поскольку слово MISSING может быть в любом поле.
Что-то происходит с форматированием printf, что оно не учитывает длину для этого конкретного поля, оно делает его намного меньше.
Спасибовы!