shell 创建一个文本文件与一些html标签的格式与条件使用csv文件脚本工作1行,但需要所有行

0s7z1bwu  于 12个月前  发布在  Shell
关注(0)|答案(3)|浏览(103)

有人可以请帮助我如何在循环中转换这个,这样这个逻辑将适用于所有行,我想如果列4是大于然后列3然后列4将在红色相同的文本文件,我将在电子邮件中使用,使突出显示将是可见的

输入有数据的Csv文件x1c 0d1x

App Launch Time,    Login Page, 7091,   8091
Page Load Time,     Home Page,  303,    993
Page Api Response,  Home Page,  861,    761
Page Parsing Time,  Home Page,  141,    221

使用下面的shell脚本

a=`awk -F',' '{print $1}' 'input.csv'`
b=`awk -F',' '{print $2}' 'input.csv'`
c=`awk -F',' '{print $3}' 'input.csv'`
d=`awk -F',' '{print $4}' 'input.csv'`
if [ $d -gt $c ]
then
echo '<tr>' '<td align="center">'$a'</td>' '<td align="center">'$b'</td>' '<td align="center">'$c'</td>' '<td align="center" bgcolor="red">'$d'</td>' '</tr>' >> compare.txt
else
echo '<tr>' '<td align="center">'$a'</td>' '<td align="center">'$b'</td>' '<td align="center">'$c'</td>' '<td align="center">'$d'</td>' '</tr>' >> compare.txt
fi
echo '</table>' >> compare.txt

txt文件中的输出-以下1行的输出要求所有行都相同

<tr> <td align="center">AppLaunchTime</td> <td align="center">LoginPage</td> <td align="center">7091</td> <td align="center" bgcolor="red">8091</td> </tr>
7bsow1i6

7bsow1i61#

你可以这样做

while IFS=, read -r a b c d; do     
    if [ $d -gt $c ]
    then
        echo '<tr>' '<td align="center">'$a'</td>' '<td align="center">'$b'</td>' '<td align="center">'$c'</td>' '<td align="center" bgcolor="red">'$d'</td>' '</tr>' >> compare.txt
    else
        echo '<tr>' '<td align="center">'$a'</td>' '<td align="center">'$b'</td>' '<td align="center">'$c'</td>' '<td align="center">'$d'</td>' '</tr>' >> compare.txt
    fi     
 done < input.csv
echo '</table>' >> compare.txt
iaqfqrcu

iaqfqrcu2#

awk -F', *' '
    BEGIN{ print "<table>" }
    {
        printf "<tr>"
        for (i=1; i<=NF; i++){
            printf("<td align=\"center\"%s>%s</td>", (i==4 && $4>$3 ? " bgcolor=\"red\"": ""), $i)
        }
        print "</tr>"
    }
    END{ print "</table>" }
' input.csv > compare.txt

$ cat compare.txt 
<table>
<tr><td align="center">App Launch Time</td><td align="center">Login Page</td><td align="center">7091</td><td align="center" bgcolor="red">8091</td></tr>
<tr><td align="center">Page Load Time</td><td align="center">Home Page</td><td align="center">303</td><td align="center" bgcolor="red">993</td></tr>
<tr><td align="center">Page Api Response</td><td align="center">Home Page</td><td align="center">861</td><td align="center">761</td></tr>
<tr><td align="center">Page Parsing Time</td><td align="center">Home Page</td><td align="center">141</td><td align="center" bgcolor="red">221</td></tr>
</table>
lnxxn5zx

lnxxn5zx3#

仅使用1 awk

awk -F, '
BEGIN {fmt="<tr><td align="center">%s</td><td align=\"center\">%s</td><td align=\"center\">%s</td><td align=\"center\" bgcolor=\"%s\">%s</td></tr>"}

{color=($4>$3)?"red":"black"; printf(fmt, $1, $2, $3, color, $4)} 

END {printf("</table>\n")}' input.csv

相关问题