Estou supondo que o arquivo CSV que você realmente possui tenha uma linha de cabeçalho adicional. Se não, você pode adicionar facilmente uma linha echo
adicional para adicionar o cabeçalho.
Eu notei que há uma coluna extra de dados no seu CSV; parece uma duração.
Se você quiser manter a duração, isso é muito fácil:
(
echo "From: abc"
echo "Subject: testing of html table using"
echo "Content-type: text/html"
echo
echo '<table border="1">'
sed -e 's!^!<tr><td>!' -e 's!$!</td></tr>!' -e 's!,!</td><td>!g' status.csv
echo '<table>'
) | sendmail ...
Cada linha do CSV é convertida em algo semelhante a:
<tr><td>BF</td><td>2016-07-28 09:30:38</td><td>2016-07-28 23:43:32</td><td>14:12:54</td></tr>
Se você não quiser a última coluna de saída, podemos alterar a linha sed
para removê-la:
sed -e 's!,[^,]*$!!' -e 's!^!<tr><td>!' -e 's!$!</td></tr>!' -e 's!,!</td><td>!g' status.csv
Agora essa mesma linha
<tr><td>BF</td><td>2016-07-28 09:30:38</td><td>2016-07-28 23:43:32</td></tr>
Em ambos os casos, porque não há ,
entre a hora e a data em que os mantemos no mesmo elemento <td>
... </td>
data.
EDITAR PARA ADICIONAR:
Vamos dividir o sed em suas partes componentes:
Em primeiro lugar
s!,[^,]*$!!
Isso remove tudo, desde a última vírgula até o final da linha. Essencialmente, remove o campo "Duração"
Próximo
s!^!<tr><td>!
Isso garante que cada linha comece com <tr><td>
- basicamente o início de uma nova linha da tabela e um novo elemento de dados
Então
s!$!</td></tr>!
O que garante que o elemento de dados termine e a linha da tabela termine no final de cada linha.
Neste ponto, temos uma linha que parece <tr><td>csv,file,data</td><tr>
, então podemos converter todos os ,
em </td><tr>
s!,!</td><td>!g
Pequenos passos simples se somam para dar muito trabalho!