総ネットワークログイン時間の計算

総ネットワークログイン時間の計算

ユーザーがネットワークにログイン/ログアウトするセッションを記録するログファイルがあります。

[10:21:10] User logged in 
[13:59:42] User logged out 
[15:42:00] User logged in 
[16:42:13] User logged out 
[11:15:02] User logged in 
[11:42:23] User logged out 

すべてのユーザーがオンラインで費やした合計時間を計算したいと思います。上記のログファイルは実際には非常に長いです。これは単なる例です。

この例では5:06:06時間です。

ベストアンサー1

sed次の操作を試すことができますawk

    cat file | sed -r 'N; s/\n/ /; s/] User logged [^ ]+//g; y/[:/  /' | awk '{s += ($4-$1)*3600 + ($5-$2)*60 + $6-$3}END {printf "%d:%02d:%02d\n", s/3600, s/60%60, s%60}'

    5:06:06

sed各ユーザーの「ログイン」と「ログアウト」の時間範囲が並べ替えられ、その列awkで時間計算が実行されます。

おすすめ記事