簡體   English   中英

使用 shell 腳本打印過去 2 年的周末日期

[英]To print past 2years weekends dates using shell scripting

我想要 Bash 腳本中的代碼“它應該以下面的方式打印日期從:2015-October-03 2015-October-04(在下一行它應該再次打印)2015-October-10 2015-October-11” " " "

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

因此,這應該僅以上述格式打印從 2015 年到周末日期的所有月份。 請盡早幫助我

以下是您查詢的解決方案。

解決方案:-

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

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

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

2015-January-31 2015-February-01

...

2016-5-07 2016-5-08

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-October-14 2017-October-15

2017-October-21 2017-October-22

2017-October-28 2017-October-29

解釋

  1. Date_Diff_Count是變量,即通過從當前日期減去開始日期來獲取天數。 根據您的意願,您可以編輯開始日期。

    For 循環從 -Date_Diff_Count 開始到 0,例如:如果 Date_Diff_Count 是 500,則 for 循環序列從 -500 開始到 0。

  2. 值是我們在對 date 和egrep命令的輸出執行管道后僅獲取年、月和日期的地方。

  3. 如果值不為零,那么我們將日期轉換為格式YYYY-month-DD

  4. 最終輸出將保存在sample.txt文件中

  5. 最后的粘貼命令是將連續的 2 行合並為一行。 如果要合並 3 行,請使用paste -d " " - - - d 是分隔符來分隔合並的行。 您可以根據需要使用任何其他運算符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM