我有一个这样的文件,
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,则打印前四行,如果不是,则比较第 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