Para encontrar diferença entre duas linhas de um mesmo arquivo

1

Eu tenho um arquivo como este,

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

até 6827 linhas.

Eu quero encontrar a diferença (somente dados sem tempo) da 4ª e da 1ª linhas se for maior que 100 e depois imprimir as primeiras 4 linhas, se não, então comparar 5ª e 2ª linha e assim por diante até 6.000 linhas. / p>

Dados na 4ª linha - 1ª linha (1786-2613) > 100 , imprima as primeiras 4 linhas (incluindo o tempo). Em seguida, continue com a comparação da 5ª linha - 2ª linha (2138-2613) > 100 e depois imprima as linhas 2,3,4,5. Da mesma forma, quero comparar até 6.000 linhas.

Eu quero uma saída como essa,

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
    
por gayathri 08.07.2017 / 10:45

1 resposta

3

Você pode manter matrizes dos quatro pares de valores-chave mais recentes e percorrê-los usando a aritmética de módulo, por exemplo,

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
    
por 08.07.2017 / 15:01