2列の値が等しい場合、1列の差を出力

2列の値が等しい場合、1列の差を出力

次のファイルがあります。

19:32:19        4599544
19:32:22        4599544
19:33:07        4599545
19:33:11        4599545
19:33:58        4599546
19:34:01        4599546

最初の列は時間(時:分:秒)です。 2番目の列の値が同じ場合。 column1の値の違いを印刷する必要があります。つまり、次のような出力が必要です。

3  4599544
4  4599545
3  4599546

ベストアンサー1

awk '
    function to_seconds(hms,     t) {
        split(hms, t, /:/)
        return (t[1]*3600 + t[2]*60 + t[3])
    }
    $2 in times {print to_seconds($1) - times[$2], $2}
    {times[$2] = to_seconds($1)}
' << DATA
19:32:19        4599544
19:32:22        4599544
19:33:07        4599545
19:33:11        4599545
19:33:58        4599546
19:34:01        4599546
DATA
3 4599544
4 4599545
3 4599546

おすすめ記事