時間差の計算

時間差の計算

時差を計算する必要があります。

文書:

$ cat time.log
06:12:23
06:12:54
06:14:18
06:15:38
$

私はその結果が次のようになると思います。

0:00:31
0:01:20

私はこれを試しました

#!/bin/sh
cat "$@" |
tr : ' ' |
  dc -e '
[60+Lm1-Sm]SS
[60+Lh1-Sh]SM
[24+]SH
?SsSmSh
?SsSmSh
LsLs- d0>S Ss
LmLm- d0>M Sm
LhLh- d0>H Sh
[
]Ls[:]Lm[:]Lh
nnnnnn
'

しかし、結果は次のとおりです。

$ ./calculate_time.sh time.log 
0:0:31
$ 

最初の2つの行間の違いのみを取得しますが、残りの行間の違いも取得するにはどうすればよいですか?

ベストアンサー1

date計算できるもので変換のようなツールを使うのはどうでしょうか?

sed eGNUフラグのセキュリティへの影響に気にしない場合は、次のことができます。

sed 'N;s/\(.*\)\n\(.*\)/date -d @$(($(date -d \2 +%s) - $(date -d \1 +%s))) -u +%H:%M:%S/e' time.log

したがって、date -d 6:12:43 +%sタイムスタンプを秒に変換し、差を計算してから再変換できますdate -d 80 -u +%H:%M:%S。 sedスクリプトはこれらの行を組み合わせて実行します。

おすすめ記事