我使用了这个代码,但它只适用于一月份。我怎样才能让它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
选项。您可以改用ncal
,man cal
详情请参阅。