[英]bash shell scripting: create an endtime from a starttime
我正在將一些數據從一種文件格式調解到另一種文件格式,並使用bash來執行調解步驟。 部分過程涉及從文件名中取一個時間戳來創建一個開始時間,然后再添加5分鍾來創建結束時間。 文件名以YYYYmmddHHMMSS格式給我一個日期。 我可以輕松地為每個開始時間添加500以獲得適用於所有開始date --date=
除了超過55小時,但這顯然不正確所以我試圖使用date --date=
code來添加5 date --date=
,如下所示:
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
也就是說,問題是YYYYYMMDDHHMMSS
單獨在date
是不可理解的。 相反,請使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.