2017-06-19 91 views
2

我對bash和所有終端一般都很陌生 - 我一直在搞cal和日期腳本,想知道是否有反正要列出星期一的所有日期這個月 。 我的思考過程是通過cal命令,列出日期並可能從該輸入切割一列。那可能嗎 ?列出本月的所有星期一

回答

3

你可以用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 
+0

只有GNU日期。不是POSIX – dawg

2

考慮:

$ 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的,使用字段寬度(呆子僅此):

$ 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 
+1

大概'NCAL | awk'NR == 2 {$ 1 =「」; print}''?總之,加上一個使用'cal' – hek2mgl

+0

,我以爲我是唯一一個使用cal-3來保存日曆的人... –

0

CAL的組合,切命令來實現的輸出。

cal -h| cut -c'4,5' 

刪除高亮顯示並剪切適合在星期一字段中的字符。

ncal | sed -n '/^Mo/p' 

輸出如下:

Mo  5 12 19 26 
相關問題