【问题标题】:To print past 2years weekends dates using shell scripting使用 shell 脚本打印过去 2 年的周末日期
【发布时间】:2017-10-31 04:47:21
【问题描述】:

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

至 :2017-October-21 2017-October-22 2017-10-28 2017-10-29

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

【问题讨论】:

  • 请告诉我们您的尝试。
  • 另外,如果你能更好地解释你想要什么,例如,“我想打印过去 3 年的每个星期六或星期日的日期”,那将有所帮助。
  • Here's a question similar to yours,希望您能找到解决方案。
  • 格式应该是一样的 Year-Jan,Feb,-DD

标签: bash shell scripting


【解决方案1】:

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

解决方案:-

#!/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 年 1 月 3 日 2015 年 1 月 4 日

2015 年 1 月 10 日 2015 年 1 月 11 日

2015 年 1 月 17 日 2015 年 1 月 18 日

2015 年 1 月 24 日 2015 年 1 月 25 日

2015-1-31 2015-2-01

...

2016 年 5 月 7 日 2016 年 5 月 8 日

2016 年 5 月 14 日 2016 年 5 月 15 日

2016 年 5 月 21 日 2016 年 5 月 22 日

2016 年 5 月 28 日 2016 年 5 月 29 日

...

2017-October-07 2017-October-08

2017 年 10 月 14 日 2017 年 10 月 15 日

2017 年 10 月 21 日 2017 年 10 月 22 日

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

说明

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

    For 循环从 -Date_Diff_Count 开始到 0,例如:if Date_Diff_Count 为 500,for 循环序列从 -500 开始到 0。

  2. 值是我们在对日期和egrep 命令的输出执行管道后仅获取年、月和日期的位置。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 2021-03-20
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多