Как я заменяю новую строку и пространство с <td> <TR> с помощью sed в течение каждого календарного месяца?

Я использую этот код, но он только работает на январь. Как я могу использовать sed работать в течение каждого месяца?

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
1
задан 31 January 2018 в 00:43

1 ответ

Я использовал бы a for цикл для движения за необходимые месяцы для 1–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>\1</td>|g;s|^|<tr>|;s|$|</tr>|};$s|$|\n</table>|' >>file.html
done

Это работает в 16,04. Как указано другими в комментариях и подтвержденный man страница, в 17,10 (и seqq.) cal не имеет -h опция больше. Можно использовать ncal вместо этого, посмотрите man cal для деталей.

3
ответ дан 7 December 2019 в 12:30

Другие вопросы по тегам:

Похожие вопросы: