Como grep as seguintes linhas de um arquivo?

0

Eu tenho um arquivo com os nomes de muitos arquivos em um diretório no seguinte formato:

A20150824.0950-0955_jambala_CcnActiveSessionCounterJob
A20150824.0945-0950_jambala_CcnActiveSessionCounterJob
A20150824.0940-0945_jambala_CcnActiveSessionCounterJob
A20150824.0935-0940_jambala_CcnActiveSessionCounterJob
A20150824.0955-1000_jambala_CcnActiveSessionCounterJob
A20150824.0000-0005_jambala_CcnActiveSessionCounterJob
A20150824.0100-0105_jambala_CcnActiveSessionCounterJob
A20150824.0105-0110_jambala_CcnActiveSessionCounterJob
A20150824.0110-0115_jambala_CcnActiveSessionCounterJob
A20150824.0115-0120_jambala_CcnActiveSessionCounterJob
A20150824.0120-0125_jambala_CcnActiveSessionCounterJob
A20150824.1400-1405_jambala_CcnActiveSessionCounterJob

A convenção de nomenclatura dos arquivos acima é A<YYYYMMDD>.HHMM-HHMM_<city>_CcnActiveSessionCounterJob .

Esses arquivos são criados a cada 5 minutos por todas as horas todos os dias, de modo que, a cada hora, eu recebo 12 arquivos e, por dia, 12X24 arquivos. Eu criei um arquivo que tem os nomes de todos os arquivos 12x24 e tenho um while loop no script bash onde estou tentando fazer algum processamento por hora. Eu quero encontrar uma maneira pela qual eu poderia criar outro arquivo que contém os 12 arquivos para cada hora. Para isso, estou tendo um loop externo que fornece o valor da hora e o loop de minuto interno que fornece o valor de minutos. Esses arquivos possuem as informações de horário em seus nomes. Ex:

A20150824.0950-0955_jambala_CcnActiveSessionCounterJob

fornece as informações das 09h50 às 09h55.

Como faço para usar grep para extrair os nomes de arquivos do arquivo que contém todos os nomes de arquivos 12X24 e colocá-los em um arquivo separado, de forma que um novo arquivo contenha os seguintes nomes de arquivos:

A20150824.0900-0905_jambala_CcnActiveSessionCounterJob
A20150824.0905-0910_jambala_CcnActiveSessionCounterJob
A20150824.0910-0915_jambala_CcnActiveSessionCounterJob
A20150824.0915-0920_jambala_CcnActiveSessionCounterJob
.
.
.
A20150824.0955-1000_jambala_CcnActiveSessionCounterJob

Eu já tenho uma variável hour que tem a informação de hora sendo processada atualmente, eu estava tentando usar o seguinte para fazer o necessário, mas não funciona:

grep -E '.$hour' FILE_with_ALL_FILENAMES

em que .$hour está segmentado para .09 no nome do arquivo acima. Como faço para corrigir isso?

    
por Ankit Vashistha 25.08.2015 / 08:37

1 resposta

2

Assumindo:

hour=09

Use isso:

grep "\.$hour" file

Com as aspas simples no seu exemplo, a variável não é interpretada como variável. Portanto, o padrão procura por $hour . Além disso, o ponto tem que ser escapado, caso contrário, ele corresponderia a qualquer caractere.

    
por 25.08.2015 / 08:46