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
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.
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