Scripting

在 AIX 中將字元串轉換為日期並獲取日期時間之間的差異

  • September 3, 2019

我有一個這樣的日誌文件:

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.

ksh93printf理解您的輸入格式,因此您可以使用:

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))"

引用自:https://unix.stackexchange.com/questions/538886