BWO*_*ONG 3 unix calendar date
我正在使用AIX和ksh.我正在计算一个月的工作日数.我试图使用AWK,但我现在挂了.
这是我到目前为止所得到的:
cal | awk '{print $2, $3, $4, $5, $6} | awk 'NR > 2'
Run Code Online (Sandbox Code Playgroud)
这是cal的正常输出(对于当前日期/时间):
April 2014
Sun Mon Tue Wed Thu Fri Sat
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
Run Code Online (Sandbox Code Playgroud)
以下是我使用该脚本获得的内容:
2 3 4 5
7 8 9 10 11
14 15 16 17 18
21 22 23 24 25
28 29 30
Run Code Online (Sandbox Code Playgroud)
我的计划是,最后将这些行读入ac程序并输出工作日总数(现在我们不担心正常工作日的假期).
正如你在这里看到的那样,由于输出的第3行本身只有5列,所以它在那一周的第一个工作日下降了.也许我认为这一切都是错误的 - 如果在Unix操作系统或C语言中有另一种方法可以做到这一点:我对"cal"和"awk"没有任何感情依恋(至今尚未).
这可以做到:
cal -h | cut -c 4-17 | tail -n +3 | wc -w
Run Code Online (Sandbox Code Playgroud)
cal在4个字符的列上显示行.-h关闭今天的突出显示.
April 2014
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
Run Code Online (Sandbox Code Playgroud)
由于星期日是第一列,星期六是最后一列,因此需要提取字符4和17之间的数字:
$ cal -h | cut -c 4-17
April 2014
Mo Tu We Th Fr
1 2 3 4
7 8 9 10 11
14 15 16 17 18
21 22 23 24 25
28 29 30
Run Code Online (Sandbox Code Playgroud)
然后删除两个第一行:
$ cal -h | cut -c 4-17 | tail -n +3
1 2 3 4
7 8 9 10 11
14 15 16 17 18
21 22 23 24 25
28 29 30
Run Code Online (Sandbox Code Playgroud)
然后计算单词数:
$ cal -h | cut -c 4-17 | tail -n +3 | wc -w
22
Run Code Online (Sandbox Code Playgroud)