時差を計算する必要があります。
文書:
$ 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
e
GNUフラグのセキュリティへの影響に気にしない場合は、次のことができます。
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スクリプトはこれらの行を組み合わせて実行します。