bash shell 脚本:从开始时间创建结束时间



我正在将一些数据从一种文件格式调解到另一种文件格式,并使用 bash 来执行中介步骤。该过程的一部分涉及从文件名中获取时间戳以创建开始时间,然后添加 5 分钟以创建结束时间。文件名给了我一个这种格式的日期 YYYYmmddHHMMSS。我可以轻松地在每个开始时间中添加 500,以获得适用于所有开始时间的结束时间,除了一小时后的 55 分钟,但这显然不正确,所以我尝试使用 date --date= 代码添加 5 分钟,如下所示:

date --date='$starttime +5 minutes' '+%Y%m%d%H%M%S'

例如:

date --date='20140220125500 +5 minutes' '+%Y%m%d%H%M%S'

但是我每次都收到这样的错误:

日期

:无效日期"20140220125500 +5 分钟"

任何人都可以建议我需要在我的日期语句中更改什么,或者是否有类似的替代语法可用?

这对我有用:

$ date --date='20140220 12:55:00 CET +5 minutes' '+%Y%m%d%H%M%S'
20140220130000

也就是说,问题是date无法理解仅YYYYYMMDDHHMMSS.相反,请以YYYYYMMDD HH:MM:SS格式提供它。

当您以该YYYYYMMDDHHMMSS格式接收数据时,可以使用sed对其进行解析,如下所示:

$ file="YYYYmmddHHMMSS"
$ new_name=$(sed -e 's/^(.{8})(.{2})(.{2})(.{2})/1 2:3:4/' <<< "$file")
$ echo "$new_name"
YYYYmmdd HH:MM:SS

所以在你的情况下:

$ file="20140220125500"
$ new_name=$(sed -e 's/^(.{8})(.{2})(.{2})(.{2})/1 2:3:4/' <<< "$file")
$ echo "$new_name"
20140220 12:55:00
$ date --date="$new_name CET + 5 minutes"
Thu Feb 20 13:00:00 CET 2014

我使用的注释

$ date --date="$new_name CET +5 minutes" '+%Y%m%d%H%M%S'
              ^                        ^
              note the double quotes to have the var expanded

相关内容

  • 没有找到相关文章

最新更新