我有一个这样的日志文件:
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
.
答案1
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))"