Como eu substituo nova linha e espaço com tdtr usando sed para cada mês?

1

Eu uso este código, mas ele só funciona em janeiro. Como posso usar sed para trabalhar todos os meses?

var='<table>\n<tr><th colspan="7">'
cal -h | sed '1{s|^|'"${var}"'|;s|$|</th></tr>|};2,${s|\(..\) |<td></td>|g;s|^|<tr>|;s|$|</tr>|};$s|$|\n</table>|' >> file.html
    
por Slavko Oleksiuk 30.01.2018 / 21:05

1 resposta

3

Eu usaria um loop for para passar os meses necessários, para 1 a 12 é:

var='<table>\n<tr><th colspan="7">'
for i in {1..12}; do
  cal -hm$i | sed '1{s|^|'"${var}"'|;s|$|</th></tr>|};2,${s|\(..\) |<td></td>|g;s|^|<tr>|;s|$|</tr>|};$s|$|\n</table>|' >>file.html
done

Isso funciona em 16.04. Como apontado por outros nos comentários e confirmado por a man page , em 17.10 (et seqq.) cal não tem mais a opção -h . Você pode usar ncal , consulte man cal para obter detalhes.

    
por dessert 30.01.2018 / 21:24