Criar varios arquivos a partir de outro

1. Criar varios arquivos a partir de outro

Joao Vitorino junior
akbar415

(usa Red Hat)

Enviado em 10/03/2009 - 04:52h

Olá pessoal.
Tenho um arquivo (um relatório gerado pelo sistema) que me mostra os dados de todos os setores da minha empresa.
Preciso dividir esses dados por certo. Existem expressões regulares que me tornam fácil identificar cada setor.
Ex: Cada setor sempre começa com a palavra "SETOR" e termina com as palvras "TOTAL SETOR".

Como faço para dividir esse arquivo -relatório- em vários outros menores.
já tentei criar um shell usando cat e grep mas sempre me enrolo. COnsigo colocar o primeiro setor em um arquivo separado, mas a partir do segundo já não consigo. Pois não sei como fazer para que o shell reconheça que a ultima linha do primeiro setor seja a primeira+1 do proximo setor.

Açguém sabe me ajudar a resolver isso com sed (não conheço muito desse editor)

PS: Não adianta contar linhas pois todos os dias esse relatório sai com quantidade de linhas variadas.





  


2. Re: Criar varios arquivos a partir de outro

Marciano R Souza
marcianosouza

(usa KUbuntu)

Enviado em 10/03/2009 - 18:43h

Entendi o que você precisa, porem se o numero de linhas é variado fica complicado, mas uma dica que posso te dar é fazer um "for" ou tentar algo com os comando "tail e head".




3. Re: Criar varios arquivos a partir de outro

Denis Doria
thuck

(usa Debian)

Enviado em 10/03/2009 - 23:25h

Talvez isso ajude:

thuck@thuck:~/test$ cat mm
setor1
x
x
x
x
x
c
total setor1
setor2
d
d
d
total setor2
setor3
f
g
d
d
d
d
v
total setor3
thuck@thuck:~/test$ grep '^setor' mm
setor1
setor2
setor3
thuck@thuck:~/test$ grep '^setor' mm |while read LINE
> do
> sed '/'${LINE}'/,/total '${LINE}'/!d' mm
> done
setor1
x
x
x
x
x
c
total setor1
setor2
d
d
d
total setor2
setor3
f
g
d
d
d
d
v
total setor3
thuck@thuck:~/test$ grep '^setor' mm |while read LINE; do sed '/'${LINE}'/,/total '${LINE}'/!d' mm > $LINE; done
thuck@thuck:~/test$ ls
mm setor1 setor2 setor3
thuck@thuck:~/test$ cat setor1
setor1
x
x
x
x
x
c
total setor1
thuck@thuck:~/test$




4. Funfou

Joao Vitorino
Joao_Vitorino

(usa Red Hat)

Enviado em 13/03/2009 - 03:42h

Obrigado
Funcionou como uma luva.
So gostaria que vc me explicasse onde nesses comandos crio os arquivos setor1, setor2 e setor3, pois gostaria de colocar outro nome. E também não entendi o ">$line"


grato


5. Re: Criar varios arquivos a partir de outro

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 17/03/2009 - 10:41h

Se o arquivo sempre tem como header uma string como SETOR, você poredia usar o CSPLIT. ex:
csplit -k -f PARTE arqinteiro "/^SETOR/" {99}
...................|...........|..............|_______string cabeçalho
...................|...........|________ Nome do arquivo que será particionado
...................|_________ Nome dos arquivos que serao gerados neste caso PARTE00 à PARTE99

É uma solução simples, mas pode ajudar.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts