이런 파일이 있는데,
19:36:19_19/06/2017 1786
19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613
19:44:28_19/06/2017 2613
19:46:32_19/06/2017 2613
19:48:33_19/06/2017 2613
19:50:35_19/06/2017 2613
최대 6827줄.
행 4와 행 1(시간이 아닌 데이터만) 사이의 차이를 찾고 싶습니다. 100보다 크면 처음 4개 행을 인쇄하고, 그렇지 않은 경우 행 5를 행 2와 비교하는 식으로 최대 6000개 행을 비교합니다.
그런 다음 4행 - 1행의 데이터는 (1786-2613) > 100
처음 4행(타이밍 포함)을 인쇄합니다. 그런 다음 5행 - 2행을 계속 비교한 (2138-2613) > 100
다음 2, 3, 4, 5행을 인쇄합니다. 이번에도 최대 6000행까지 비교하고 싶습니다.
나는 이런 출력을 원한다.
19:36:19_19/06/2017 1786
19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613
19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613
19:44:28_19/06/2017 2613
답변1
마지막 4개 키-값 쌍의 배열을 유지하고 모듈식 산술을 사용하여 이를 반복할 수 있습니다.
awk '{
v[(NR-1)%4] = $0; k[(NR-1)%4] = $2
}
NR > 3 {
if ($2 - k[NR%4] > 100) {
for (i=NR;i<NR+4;i++) print v[i%4]; print ""
}
}' file
19:36:19_19/06/2017 1786
19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613
19:38:21_19/06/2017 2138
19:40:22_19/06/2017 2612
19:42:23_19/06/2017 2613
19:44:28_19/06/2017 2613