如何使用 sed 替换每个日历月的新行和空格?

如何使用 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

我将使用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(及后续版本)中cal不再有该-h选项。您可以改用ncalman cal详情请参阅。

相关内容