Shell 脚本 - 创建一个带有一些 html 标签的文本文件,以便使用适用于 1 行但需要所有行的 csv 文件脚本进行条件格式化

问题描述 投票:0回答:1

有人可以帮助我如何在循环中转换它,以便该逻辑适用于所有行,我希望如果第 4 列大于第 3 列,则第 4 列将呈红色,我将在电子邮件正文中使用相同的 txt 文件,以便突出显示在那里可见

输入有数据的Csv文件

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>
bash shell csv sh
1个回答
0
投票
app_launch_time=`awk -F',' '{print $1}' 'input.csv'`
login_page=`awk -F',' '{print $2}' 'input.csv'`
column3=`awk -F',' '{print $3}' 'input.csv'`
column4=`awk -F',' '{print $4}' 'input.csv'`

echo '<table>' > compare.txt

while read -r line; do
  columns=(${line//,/ })
  app_launch_time=${columns[0]}
  login_page=${columns[1]}
  column3=${columns[2]}
  column4=${columns[3]}
  # If column4 is greater than column3, highlight it in red
  if [[ "$column4" -gt "$column3" ]]; then
    echo '<tr>' '<td align="center">'$app_launch_time'</td>' '<td align="center">'$login_page'</td>' '<td align="center">'$column3'</td>' '<td align="center" bgcolor="red">'$column4'</td>' '</tr>' >> compare.txt
  else
    echo '<tr>' '<td align="center">'$app_launch_time'</td>' '<td align="center">'$login_page'</td>' '<td align="center">'$column3'</td>' '<td align="center">'$column4'</td>' '</tr>' >> compare.txt
  fi
done < input.csv
echo '</table>' >> compare.txt
© www.soinside.com 2019 - 2024. All rights reserved.