我对bash和终端都很陌生 - 我一直在玩cal和日期脚本,想知道是否有方法列出当前月份所有星期一的日期。 我的思路是通过cal命令,列出日期,然后可能从这个输入中切割一个列。这可能吗?
date
命令来实现。打印自一个月前开始的10个星期一:for x in $(seq 0 9)
do
date -d "$x monday 5 week ago"
done
仅搜索当前月份的grep命令。完整命令:for x in $(seq 0 9); do; date -d "$x monday 5 week ago"; done | grep $(date +%b)
输出:
Mon Jun 5 00:00:00 MSK 2017
Mon Jun 12 00:00:00 MSK 2017
Mon Jun 19 00:00:00 MSK 2017
Mon Jun 26 00:00:00 MSK 2017
给定:
$ cal
June 2017
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
您可以做以下事情:
$ cal | awk 'NF>5{print $2}'
Mo
5
12
19
26
$ cal | gawk -v n=5 '
BEGIN{
FIELDWIDTHS = "3 3 3 3 3 3 3"
}
FNR>1{print $n}'
Th
1
8
15
22
29
$ ncal | awk '/^Mo/'
Mo 5 12 19 26
ncal | awk 'NR==2{$1="";print}'
吧?总之,使用cal
加一分。 - hek2mgl通过结合cal和cut命令实现输出。
cal -h| cut -c'4,5'
取消高亮显示并剪切适合星期一字段的字符。
ncal | sed -n '/^Mo/p'
输出如下:
Mo 5 12 19 26