Excluir 5 linhas a cada 56 linhas [RESOLVIDO]

1. Excluir 5 linhas a cada 56 linhas [RESOLVIDO]

fernanda
fernandaforbici

(usa Outra)

Enviado em 17/02/2010 - 17:04h

Boa tarde,

Tenho um arquivo que é um relatorio exportado.. Preciso excluir o "cabeçalho" de cada página:

Ex:

PPPPPPPPPPPP Rol Parametrizado de XXXX em 29/01/2010 Ordem: Opcional Pg. 1^M

CODUNI NOMCON CGCCIC INSEST^M
CODLOG ENDCOR CODBAI FONE^M
CEP UF CIDCOR CODCNT EMAUNI^M
^M
10000001 48100 RRR RRRRR RRR 121212121211M
139 RUA SSSSSS 41 3 BAIRRO SSSSSSS 21212121212M
656565656 SS DFRFDFFFF
^M
10000011 28221 KLKKKKLK LKLKLK 0^M
281 RUA OOIOOIO 37 0 OIOIOIO 0^M
45454545454 SS 0^M
^M

PPPPPPPPPPPP Rol Parametrizado de XXXX em 29/01/2010 Ordem: Opcional Pg. 1^M

CODUNI NOMCON CGCCIC INSEST^M
CODLOG ENDCOR CODBAI FONE^M
CEP UF CIDCOR CODCNT EMAUNI^M
^M
...........


PPPPPPPPPPPP Rol Parametrizado de XXXX em 29/01/2010 Ordem: Opcional Pg. 1^M

CODUNI NOMCON CGCCIC INSEST^M
CODLOG ENDCOR CODBAI FONE^M
CEP UF CIDCOR CODCNT EMAUNI^M
^M
.....






A cada 56 linhas esse cabeçalho se repete.. quero excluir.




  


2. MELHOR RESPOSTA

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 05/03/2010 - 11:51h

As alternativas dos colegas são ótimas ... acho que as melhores, agora, se mesmo assim você quizer usar a conta a cada 56 linhas as primeira 5 são cabeçalho ... pode usar esse script:

counter=0
while read linha
do
counter=`expr $counter + 1`
if [ "$counter" -eq 56 ];then
counter=0
elif [ "$counter" -gt 5 ];then
echo $linha >> arquivo_novo
fi
done < seu_arquivo

mas é muito mais demorado do que os comandos apresentados antes.


3. Re: Excluir 5 linhas a cada 56 linhas [RESOLVIDO]

Fábio Farias
Fabio_Farias

(usa openSUSE)

Enviado em 17/02/2010 - 18:16h

Dê-nos mais informações sobre como é e por quem é exportado esse relatório (programa que o gerou, se a exportação é automática ou manual, qual linux que está usando...).
Assim fica mais fácil ajudar.
Seja bem vinda ao Linux.
Abraços!


4. Re: Excluir 5 linhas a cada 56 linhas [RESOLVIDO]

irado furioso com tudo
irado

(usa XUbuntu)

Enviado em 17/02/2010 - 20:11h

use o egrep (man egrep)

encontre o padrão e use-o, fica qualquer coisa assim:

$ egrep -v '(PPPPP|CODUNI|CODLOG|CEP...)' arquivo.velho > arquivo.novo





5. Re: Excluir 5 linhas a cada 56 linhas [RESOLVIDO]

paulo
psdrop

(usa CentOS)

Enviado em 17/02/2010 - 23:45h

Como nosso amigo falou pode usar o grep

egrep -v '^(PPPPP|CODUNI|CODLOG|CEP.UF.C)' arquivo.txt > arquivo_new.txt

tem varias formas que vc pode usar...

tbm pode remover o ^M do final da linha não tenho certeza se é isso mesmo por que to sem meu linux no momento

egrep -v '^(PPPPP|CODUNI|CODLOG|CEP.UF.C)' | sed 's/\^M$//g' arquivo.txt > arquivo_new.txt


Duvidas posta ai...

Abs boa sorte xD






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts