[英]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
解釋
Date_Diff_Count
是變量,即通過從當前日期減去開始日期來獲取天數。 根據您的意願,您可以編輯開始日期。
For 循環從 -Date_Diff_Count 開始到 0,例如:如果 Date_Diff_Count 是 500,則 for 循環序列從 -500 開始到 0。
值是我們在對 date 和egrep
命令的輸出執行管道后僅獲取年、月和日期的地方。
如果值不為零,那么我們將日期轉換為格式YYYY-month-DD
最終輸出將保存在sample.txt
文件中
最后的粘貼命令是將連續的 2 行合並為一行。 如果要合並 3 行,請使用paste -d " " - - -
d 是分隔符來分隔合並的行。 您可以根據需要使用任何其他運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.