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

관련 정보