使用shell脚本打印过去2年的周末日期

时间:2017-10-31 04:47:22

标签: bash shell scripting

我想要Bash脚本中的代码 "它应该以下面的方式打印日期 来自:2015年 - 2015年10月 - 03日 - 10月 - 04(下一行应再次打印)        2015年10月10日至10月11日        " "        " "

至:2017年10月21日至10月22日       2017年10月28日至10月29日

因此,这应该仅以上述格式打印2015年至日期周末日期的所有月份。请尽早帮助我

1 个答案:

答案 0 :(得分:0)

以下是您的查询的解决方案。

<强>解决方案: -

#!/bin/bash

Date_Diff_Count=` echo $[$[$(date +%s)-$(date -d "2015-01-01" +%s)]/60/60/24] `

for i in ` seq -$Date_Diff_Count 0 `

do 

    VALUE=`date -d "+$i day" | egrep -i "Sat|Sun" | awk -F" " '{print $2" "$3" "$6}'`

    [[ ! -z ${VALUE} ]] && date -d "${VALUE}" +%Y-%B-%d 
done > sample.txt

paste -d "      "  - - < sample.txt

<强>输出

  

2015-January-03 2015-January-04

     

2015-January-10 2015-January-11

     

2015-January-17 2015-January-18

     

2015-January-24 2015-January-25

     

2015-January-31 2015-February-01

     

...

     

2016-May-07 2016-May-08

     

2016-May-14 2016-May-15

     

2016-May-21 2016-May-22

     

2016-May-28 2016-May-29

     

...

     

2017年10月7日2017年10月 - 08月

     

2017年10月14日至10月15日

     

2017年10月21日至10月22日

     

2017年10月28日2017年10月29日

<强>解释

  1. Date_Diff_Count是变量,即获取天数 从当前日期减去开始日期。根据您的意愿 你可以编辑开始日期。

    对于Ex:if,for循环从-Date_Diff_Count开始为0 Date_Diff_Count为500,循环序列从-500到0开始。

  2. 值是我们在输出日期和egrep命令之后仅提取年,月和日期的地方。

  3. 如果值不为零,那么我们将日期转换为格式YYYY-month-DD

  4. 最终输出将保存在sample.txt文件

  5. 最终粘贴命令是将2个连续的行合并为一行。如果要合并3行,请使用paste -d " " - - - d是用于分隔合并线的分隔符。您可以根据您的要求使用任何其他操作员。