我想要Bash脚本中的代码 "它应该以下面的方式打印日期 来自:2015年 - 2015年10月 - 03日 - 10月 - 04(下一行应再次打印) 2015年10月10日至10月11日 " " " "
至:2017年10月21日至10月22日 2017年10月28日至10月29日
因此,这应该仅以上述格式打印2015年至日期周末日期的所有月份。请尽早帮助我
答案 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日
<强>解释强>
Date_Diff_Count
是变量,即获取天数
从当前日期减去开始日期。根据您的意愿
你可以编辑开始日期。
对于Ex:if,for循环从-Date_Diff_Count开始为0 Date_Diff_Count为500,循环序列从-500到0开始。
值是我们在输出日期和egrep
命令之后仅提取年,月和日期的地方。
如果值不为零,那么我们将日期转换为格式YYYY-month-DD
最终输出将保存在sample.txt
文件
最终粘贴命令是将2个连续的行合并为一行。如果要合并3行,请使用paste -d " " - - -
d是用于分隔合并线的分隔符。您可以根据您的要求使用任何其他操作员。