shell脚本实现根据离散日期划分日期区间

本文介绍如何通过Shell脚本高效处理日期,将离散的日期按照7天为单位进行聚合,减少传参次数,提高执行效率。案例中展示了脚本内容及执行结果,日期区间可根据实际需求调整。
摘要由CSDN通过智能技术生成

笔者在工作中需要动态传入日期参数执行脚本,但是将多个日期一个一个传入会降低执行效率,故根据一定时间段将日期聚合划分成区间段可以减少传参执行的次数。此例子以7天为范围聚合日期到区间段,可以根据实际需要改进。

案例中的日期文件date.txt中的日期如下:

2018-01-02
2018-07-01
2018-07-11
2018-07-15
2018-07-17
2018-07-13
2017-12-30
2018-05-02
2018-05-06
2017-11-02

shell脚本cut_date.sh如下:

#!/bin/bash

# 倒序日期文件中的日期
myline=`sort -r $1`

# 取昨日为区间段最后一天
end_date=`date -d "-1 day" "+%Y%m%d"`

# 取昨日为区间段第一天
last_begin_date=`date -d "-1 day" "+%Y%m%d"`

for i in ${myline[0]}
do
# 循环取出日期进行比较
   begin_date=`date -d $i "+%Y%m%d"`
   # 若该日期在区间段往前扩展7天内则将该日期作为区间段开始日期
   if [[ $begin_date -gt `date -d "$last_begin_date -7 day" "+%Y%m%d"` ]];then
     last_begin_date=$begin_date
   else
   # 若该日期在区间段往前扩展7天外则取出此区间,并将该日期作为新区间段的开始和结束日期再循环比较
     echo "[$las
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值