やりたいこと
以下のようなテキストファイルがあったとして
$ cat test.log 20:17:30 20:17:35 20:17:39
時刻の差分の秒数を表示したい。
環境情報
- GNU bash, version 4.4.12 release (x86_64-unknown-cygwin)
やり方
以下で時刻データをUTC形式に変換を行い
$ cat test.log | awk '{gsub(/:/, " ", $1); print mktime("2000 01 01 "$1)}' 946725450 946725455 946725459
同データに対して以下を実行すると
#!/bin/bash while read line do echo `expr $line - $hoge` hoge=$line done < ./tmp.log
差分の秒数が出力される
5 4
要件通りの値が出力される。
以下、補足です。
補足
本格的に時刻データを変換する場合はプログラミング言語に頼った方がいいものの
上記のように簡単なものであればシェルで対応が可能です。
今回は秒数の差分を意識するだけなので年と月日は任意のものを与えた上で
mktime("2000 01 01 "$1)}'
exprで差分を取得しました。
以上です。