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.