![2열의 값이 같다면 1열의 차이를 출력](https://linux55.com/image/57981/2%EC%97%B4%EC%9D%98%20%EA%B0%92%EC%9D%B4%20%EA%B0%99%EB%8B%A4%EB%A9%B4%201%EC%97%B4%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EB%A5%BC%20%EC%B6%9C%EB%A0%A5.png)
다음과 같은 파일이 있습니다.
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