Imprime o intervalo de arquivos com base no intervalo de tempo usando o awk?

1

Eu fiz algumas coisas simples com awk , mas não consigo encontrar uma maneira de fazer isso! Eu tenho um arquivo de texto contendo entradas nomeadas com ano, data juliana e hora como tal:

blah_2012251_130500_blah  
blah_2012251_131000_blah  
blah_2012251_131500_blah  
...  
blah_2012253_063000_blah  

e estou tentando encontrar uma maneira de criar um novo arquivo com entradas somente em um intervalo de tempo específico. Por exemplo, o ano de 2012 e o dia 251 às 14h02 (140200) até o dia 252 de 2012 às 6:07 da manhã (060700) devem conter arquivos para cobrir os horários:

blah_2012251_140000_blah  
blah_2012251_140500_blah
...  
blah_2012252_060500_blah
blah_2012252_061000_blah

Além disso, os arquivos nem sempre são incrementados a cada 5 minutos, como neste exemplo, por isso ele precisa ser um intervalo aberto.

    
por user26332 25.10.2012 / 17:18

2 respostas

2

o seguinte deve funcionar ... ajustar os números ordinais 2 e 3 conforme necessário

 awk -F'_' 'int($2""$3) > 2012252140600 && int($2""$3) < 2012252180700' filename
    
por 25.10.2012 / 17:44
1

f1 e f2 são a data e hora de início, l1 e l2 são a data e a hora de término:

awk -F_  -v f1="2012251" -v f2="140200" -v l1="2012252" -v l2="060700" '($2==f1 && $3>=f2) || ($2==l1 && $3<=l2) || ($2>f1 && $2<l1)' file
    
por 25.10.2012 / 17:45

Tags