Wie ersetze ich neue Zeilen und Leerzeichen durch <td> <tr> mit sed für jeden Kalendermonat?

1

Ich benutze diesen Code, aber es funktioniert nur für Januar. Wie kann ich sedjeden Monat arbeiten?

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

Antworten:

3

Ich würde eine forSchleife verwenden, um die benötigten Monate zu durchlaufen.

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>\1</td>|g;s|^|<tr>|;s|$|</tr>|};$s|$|\n</table>|' >>file.html
done

Dies funktioniert im 16.04. Wie andere in den Kommentaren hervorgehoben und auf der manSeite bestätigt haben , steht 17.10 (ff.) calNicht -hmehr zur Verfügung. Sie können ncalstattdessen verwenden, siehe man calfür Details.

Dessert
quelle
1
Ich weiß nicht , welche Version von calIhnen sind beide verwenden, aber cal -hauch cal -hm1geben Sie mir eine „Verwendung:“ Zusammenfassung. Aber ncal -hund ncal -hm1arbeiten. (Ich benutze 17.10)
muclux