Shell

如何在shell中減去兩次

  • April 23, 2017

我需要減去 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

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