如果列 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

第一列是时间(时:分:秒)。如果第二列值相同。我需要打印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

相关内容