Shell
如何在shell中減去兩次
我需要減去 shell 中時間格式的兩行。時間格式是 hh:mm:ss 我使用下面的程式碼來獲取時間。
cat /var/log/kern.log |grep usb |tail -2| awk '{print $3}'
上面程式碼的輸出是
18:23:24 18:20:20
如何以秒為單位找到差異?
我會更進一步(受這篇文章的啟發):
# => 18:23:24 --> 66204 grep usb /var/log/kern.log|tail -2|awk '{print $3}'|awk -F: '{print ($1 * 3600) + ($2 * 60) + $3 }'
所以,在我有之後:
66204 66020
然後你可以這樣做:
echo $((66204-66020)) # => 184
一個更通用的解決方案,因為它也適用於不同日期的時間:
echo "18:23:24 18:20:20" | (read later_time; read former_time; former_seconds=$(date --date="$former_time" +%s); later_seconds=$(date --date="$later_time" +%s); echo $((later_seconds-former_seconds)) ) 184