(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Bash/Linux】時間分秒の時刻データの差分秒数を取得する

スポンサーリンク

やりたいこと

以下のようなテキストファイルがあったとして

$ 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で差分を取得しました。

以上です。