Сценарий Bash для создания таблицы HTML для цветовой кодировки строк определенного столбца в зависимости от условий - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь создать сценарий для создания HTML-таблицы с цветовой кодировкой на основе значений в определенном столбце.Например

Размер Используется Доступно Использовать% Установлено 126G 80G 40G 67% / u01 63G 9.6G 51G 16% / u01 / app / grid

Я хотел бы иметь возможность сделатьфон строки в столбце «Использовать%» красный, в зависимости от того, превышает ли это значение 85%

. Пока я могу сгенерировать HTML-таблицу, используя следующий код awk + print: awk 'BEGIN{print "<table border=2 cellspacing=2 cellpadding=2>"} {print "<tr>";for(i=1;i<=NF;i++)print "<td>" $i"</td>";print "</tr>"} END{print "</table>"}'

Это дает мне желаемую таблицу.Тем не менее, как я могу использовать цветовое кодирование фона строки в определенном столбце (в данном случае используется%), основываясь на условии значения в нем?Все предложения очень ценятся.

1 Ответ

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

Попробуйте сравнить значение в 4-м столбце с 85, и если оно превышает пороговое значение, добавьте background-color свойство:

awk '
BEGIN {print "<table border=2 cellspacing=2 cellpadding=2>"}
{   print "<tr>";
    for(i=1;i<=NF;i++) {
        (NR>1 && i==4 && substr($i,0,length($i)-1) >85) ? bg=" style=\"background-color:#ff0000\"" : bg=""
        print "<td" bg ">" $i"</td>"
    }
    print "</tr>"
}
END {print "</table>"}' input.txt

Вот входные данные:

Size Used Avail Use% Mounted
126G 80G 40G 67% /u01
63G 9.6G 51G 16% /u01/app/grid
126G 110G 16G 87% /u02

И вывод:

<table border=2 cellspacing=2 cellpadding=2>
<tr>
<td>Size</td>
<td>Used</td>
<td>Avail</td>
<td>Use%</td>
<td>Mounted</td>
</tr>
<tr>
<td>126G</td>
<td>80G</td>
<td>40G</td>
<td>67%</td>
<td>/u01</td>
</tr>
<tr>
<td>63G</td>
<td>9.6G</td>
<td>51G</td>
<td>16%</td>
<td>/u01/app/grid</td>
</tr>
<tr>
<td>126G</td>
<td>110G</td>
<td>16G</td>
<td style="background-color:#ff0000">87%</td>
<td>/u02</td>
</tr>
</table>

Измените часть #ff0000, чтобы изменить цвет фона на ваш любимый.

Добавление: если вы хотите обработать первую строку как заголовок, попробуйте что-то вроде:

awk '
BEGIN {print "<table border=2 cellspacing=2 cellpadding=2>"}
{
    print "<tr>"
    if (NR==1) {starttag="th scope=\"col\""; endtag="th"}
    else {starttag="td"; endtag="td"}
    for(i=1;i<=NF;i++) {
        (NR>1 && i==4 && substr($i,0,length($i)-1) >85) ? bg=" style=\"background-color:#ff0000\"" : bg=""
        print "<" starttag bg ">" $i"</" endtag ">"
    }
    print "</tr>"
}
END {print "</table>"}' input.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...