Para isso usei:
for i in $(ls arquivos/*.gz); do gzip -dc $i > $i.temp; awk 'substr($0, 34,6)=="201111"{print $0 "|" FILENAME "|" NR}' $i.temp;rm $i.temp; done | awk 'BEGIN{c=1}{printf ("%010d%s\n", c++, $0)}' > arquivo_concatenado.txt
Onde:
for i in $(ls arquivos/*.gz) #itens de (ls arquivos/*.gz) para a variavel i
do #início do laço
do #início do laço
gzip -dc $i > $i.temp; #descompacta o arquivo para nomedoarquivo.temp
awk 'substr($0, 34,6)=="201111"{print $0 "|" FILENAME "|" NR}' $i.temp; #com o awk filtra-se a linhas onde o substring atenda a condição desejada (substr($0, 34,6)=="201111") e imprime-se o conteúdo da linha + pipe + NOME DO ARQUIVO + pipe + NUMERO DA LINHA
rm $i.temp; #remove o arquivo temporario criado na descompactação
done < fim do laço
[]'s
Nenhum comentário:
Postar um comentário