Scripting
在 AIX 中將字元串轉換為日期並獲取日期時間之間的差異
我有一個這樣的日誌文件:
2019.09.02 06:40:28 --- 2019.09.02 06:43:34 --- 2019.09.02 06:43:41 ---
我需要讀取文件並獲取日期時間“ 2019.09.02 06:43:34 ”和“ 2019.09.02 06:40:28 ”之間的差異(以小時、分鐘和秒為單位)。
while read date time message do if [[ $date = $searched_date* ]] && [[ $message = *$searched_message* ]] ; then #how to convert $date and $time to unixtime? fi done <"$LOG_FILE"
我使用的是 AIX 7,並且沒有
date -d
.
ksh93
printf
理解您的輸入格式,因此您可以使用:end=$(printf '%(%s)T' "2019.09.02 06:43:34") start=$(printf '%(%s)T' "2019.09.02 06:40:28") printf '%d\n' "$((1567421014-1567420828))"
或更一般地說:
seconds=$(printf '%(%s)T' "$date $time")
要將以秒為單位的差異轉換為 hh:mm:ss:
printf '%d hours, %d minutes, and %d seconds\n' "$((diff / 3600))" "$(( (diff % 3600) / 60))" "$((diff % 60))"