Timed 时间序列工具

Linux 小工具
向dateseq 致敬: https://github.com/hroptatyr/dateutils

git地址: https://gitee.com/pdudo/Timed

0. 安装使用

安装

# cd /usr/local
# wget https://gitee.com/pdudo/Timed/attach_files/603757/download/Timed1.1.1.linux-amd64.tar.gz
# tar zxvf Timed1.1.1.linux-amd64.tar.gz 

验证
退出当前shell,重新进入shell

#Timed -v
Timed version 1.0.1 by 2021-01-31
#

1. seq

1.1 seq套件相比传统shell脚本

1.1.1 传统shell脚本

列出 20210128 到 20210202 且排除周六、周末

#!/bin/bash

startDate=20210128
endDate=20210202

currDate=$(date -d "-1 day $startDate" +"%Y%m%d")

while (( $currDate < $endDate ))
do
        currWeek=$(date -d "+$1 day $currDate" +"%w")
        currDate=$(date -d "+$1 day $currDate" +"%Y%m%d")

        if [ 0 -eq $currWeek ] || [ 6 -eq $currWeek ];then
                continue
        fi
        echo $currDate
done

结果

# bash test.sh 
20210128
20210129
20210201
20210202
# 

1.1.2 Timed seq 工具

# Timed -seq -s 20210128 -e 20210202 -k 6,0
20210128
20210129
20210201
20210202

1.2 Timed 工具

1.2.1 获取帮助文档

# Timed -h

Usage :
-h       获取帮助
-v       查看版本
-seq 用于生成容器或时间序列
  -s string seq 开始时间
  -e string seq 结束时间
  -i int 时间间隔,单位(d/m/s) (default 1d)
  -k string 跳过某些工作日(0: 周日 , 1-6 (周1-周6))
  -f 用于指定时间的格式
	%Y:年份 
	%y: 年份后2位(00-99) 
	%m:月份(01-12) 
	%d:天(01-31) 
	%H:小时(00:23) 
	%M:分钟(00:59) 
	%S:秒(00:59)

#

1.2.2 支持多种格式输出时间序列

yyyymmdd 格式

# Timed -seq -s 20210128 -e 20210202
20210128
20210129
20210130
20210131
20210201
20210202
#

yyyy-mm-dd 格式

# Timed -seq -s 2021-01-28 -e 2021-02-02
2021-01-28
2021-01-29
2021-01-30
2021-01-31
2021-02-01
2021-02-02
#

yy-mm-dd 格式

# Timed -seq -s 21-01-28 -e 21-02-02
21-01-28
21-01-29
21-01-30
21-01-31
21-02-01
21-02-02
#

yyyy-mm-ddTHH:MM:SS 格式

# Timed -seq -s 2021-01-28T18:39:43 -e 2021-02-02T18:37:00
2021-01-28T18:39:43
2021-01-29T18:39:43
2021-01-30T18:39:43
2021-01-31T18:39:43
2021-02-01T18:39:43
#

yy-mm-dd HH:MM 格式

# Timed -seq -s "2021-01-28 18:39:43" -e "2021-02-02 18:40:00"
2021-01-28 18:39:43
2021-01-29 18:39:43
2021-01-30 18:39:43
2021-01-31 18:39:43
2021-02-01 18:39:43
2021-02-02 18:39:43
#

1.2.3 自定义时间间隔

18:00:00 —— 18:13:00 每三分钟输出一次

# Timed -seq -s 18:00:00 -e 18:13:00 -i 3m
18:00:00
18:03:00
18:06:00
18:09:00
18:12:00
#
# Timed -seq -s 18:00:00 -e 18:00:46 -i 15s
18:00:00
18:00:15
18:00:30
18:00:45
#

1.2.4 排除特殊时间

打印 2021-01-29 —— 2021-02-02 日期,排除周六/周末

# Timed -seq -s 2021-01-29 -e 2021-02-02 -k 0,6
2021-01-29
2021-02-01
2021-02-02
# 

1.2.5 和shell相结合

# cat test.sh 
#!/bin/bash

for i in `Timed -seq -s 2021-01-10 -e 2021-01-20 -i 2d -k 0,6`
do
{
	echo "time:$i"
}
done

# bash test.sh 
time:2021-01-12
time:2021-01-14
time:2021-01-18
time:2021-01-20
# 

1.2.6 自定义时间格式

# Timed -seq -s 21/01/30 -e 21/02/02 -f %y/%m/%d          
21/01/30
21/01/31
21/02/01
21/02/02

posted on 2021-01-31 10:29  pdudo  阅读(234)  评论(0)    收藏  举报