Как распечатать результаты awk с разными цветами для разных полей?

 ads2 cls create | awk -F [\"] '/^>>> cluster established .../ { strt=1 } strt!=1 { next } $1 ~ "name" { cnt++;nam[cnt]=$2 } $1 ~ "state" {stat[cnt]=$2;print -e "Node "nam[cnt]" has state "$2 } END { if (stat[1]=="3" && stat[2]=="3") { print "Cluster established. Starting session manager" } else { print "Failed" } } 

Вышеуказанная команда дает вывод ADS2 CLS Создать на awk , который проверяет определенную выходную переменную и на основе На этом он возвращается либо кластер. Начальная диспетчер сеансов « или не удалось

Однако я пытаюсь раскрасить эти выходы с Green для первого и« красный »на второй. Я искал в Интернете и не нашел ничего, связанного с цветным текстом, который напечатан с использованием команды Print , а скорее, используя команду echo -e .

Так как я могу раскрасить эти два выхода, однако с текущей реализацией!

Выход команды ADS2 CLS Создать можно увидеть ниже

kernel with pid 3336 (port 9011) killed
kernel with pid 16406 (port 9011) killed
probing service daemon @ http://xx.xx.x.xx:9010
starting kernel FDT-NB-0144 @ http://xx.xx.0.xx:9011 name=xx-NB-0144 max_consec_timeouts=10 clustermode=Standard hostname=FDT-NB-0144 framerate=20000 schedmode=Standard rtaddr=xx.xx.x.xx tickrole=Local tickmaster=local max_total_timeouts=1000
kernel FDT-NB-0144 running
probing service daemon @ http://xx.xx.xx.xx:9010
starting kernel fdt-c-agx-0008 @ http://xx.xx.xx.18:9011 name=fdt-c-agx-0008 max_consec_timeouts=10 clustermode=Standard hostname=nvidia@fdt-c-agx-0008 framerate=20000 schedmode=Standard rtaddr=xx.xx.xx.xx tickrole=Local tickmaster=local max_total_timeouts=1000
kernel fdt-c-agx-0008 running
>>> start cluster establish ...
>>> cluster established ...
        nodes {
            node {
                name = "xxx-c-agx-0008";
                address = "http://xx.xx.xx.xx:9011/";
                state = "3";
            }
            node {
                name = "xxx-NB-0144";
                address = "http://xx.xx.0.xx:9011/";
                state = "3";
            }
        }
1
задан 26 March 2021 в 16:40

1 ответ

Вы можете использовать цветные последовательности ANSI в команде AWK Printf следующим образом:

awk 'BEGIN{printf "\x1b[32m%s\x1b[0m\n", "Succeeded"}'

awk 'BEGIN{printf "\x1b[31m%s\x1b[0m\n", "Failed"}'

EX:

enter image description here

Чтобы применить его в вашем случае, изменить конец Блок:

  END { 
    if (stat[1]=="3" && stat[2]=="3") { 
      printf "\x1b[32mCluster established. Starting session manager\x1b[0m\n" } 
    else { 
      printf "\x1b[31mFailed\x1b[0m\n" 
    } 
  }
2
ответ дан 2 April 2021 в 05:23

Другие вопросы по тегам:

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