Digamos que eu tenha um arquivo csv com essas colunas:
timestamp,cpu,memory
Um exemplo da forma dos dados reais seria este gráfico:
Tendoosdadosvisualizadosdestaforma,éfácilparaoolhohumanodescobrirondequalquerumadasatividadesintensivasde4cpucomeçaetermina.
Oqueseriaumamaneirafácil,usandoferramentasdelinhacmdpadrãounix,idealmentenãorecorrendoaR
ouoctave
etc,para"grep" apenas as 8 linhas do arquivo que indicam o início e o fim dessas 4 atividades , com base na coluna "cpu"?
Obviamente, isso é um pouco confuso, e há ruído nos dados, mas qualquer solução que me dê 8 linhas que estão em algum lugar perto do início / fim é apreciada.
Um pequeno trecho do arquivo csv, mostrando apenas a primeira dessas quatro explosões de atividade:
10:44:21.310,0,53567488
10:44:22.310,1.56257,53575680
10:44:23.326,0,53854208
10:44:24.325,34.3761,57405440
10:44:25.325,73.43985,61747200
10:44:26.325,3.1251,69459968
10:44:27.325,0,69459968
10:44:28.325,0,69459968
10:44:29.325,65.6271,74756096
10:44:30.325,53.1267,77783040
...
10:50:56.450,35.93865,142700544
10:50:57.450,10.93785,142897152
10:50:58.450,1.56255,142897152
10:50:59.450,0,142897152
10:51:00.450,0,142897152
10:51:01.450,0,142897152
Idealmente, isso resultaria nas duas linhas a seguir.
10:44:24.325,34.3761,57405440
10:50:58.450,1.56255,142897152
No entanto, como não há atividade da CPU por alguns segundos entre 10:44:26.325
e 10:44:28.325
, não espero que a resposta seja tão inteligente e faça algo como "suavizar" os dados. Então, se um snippet csv como o anterior, por exemplo, rende as 4 linhas seguintes, isso seria suficiente.
10:44:24.325,34.3761,57405440
10:44:26.325,3.1251,69459968
10:44:29.325,65.6271,74756096
10:50:58.450,1.56255,142897152