[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Quebra de campos em registros de um arquivo.
From: |
eoac |
Subject: |
Re: Quebra de campos em registros de um arquivo. |
Date: |
Wed, 30 Jun 2004 13:10:19 -0000 |
User-agent: |
eGroups-EW/0.82 |
Team,
Esquece o que eu falei dos espaços pois fiz um teste com um registro
só com meia duzia de espaços e rolou.
Preciso saber como aplicar a solução usando o sed em um arquivo (o
qual contem "n" registros?
Obrigado Lista
[]´s
--- Em address@hidden, "eoac" <eoac@y...> escreveu
> Blz Aurelio, funcionou!
> só que olha só o que esta acontecendo.
>
> Para poder fazer em todo o arquivo estou atribuindo a varialvel
var$
> um cat do arquivo de registros ( var= `cat a.unl`) para assim poder
> executar o sed. Mas ao encontrar espacos em branco no registro ele
> retorna o seguinte erro:
>
> ksh:01|0011106000|0|26/03/2003|31/12/2999|ASSESSORIA: not found.
>
>
> No exemplo de registro que enviei não haviam espaços em branco no
> registro. Note nos exemplos abaixo no 6º campo do registro haverão
> espaços em branco.
>
> Como devo proceder?
>
> Mas uma vez Obrigado!
> []´s
> eoac
>
>
> 01|0011106000|0|26/03/2003|31/12/2999|ASSESSORIA REL DO
> TRABALHO|4|0|91100|1||S|
> 01|0011106000|0|26/03/2003|31/12/2999|ASSESSORIA REL DO
> TRABALHO|4|0|91100|1||S|
>
> --- Em address@hidden, Aurelio Marinho Jargas
> <aureliojargas@y...> escreveu
> > ae,
> >
> > --- eoac <eoac@y...> escreveu:
> > ...
> > >
> >
>
01|0011101001|0|04/02/2004|31/12/2999|ADMINISTRADOR|5|0|91100|1||S||||
> > > ----------
> > ...
> > > Este campo deverá ser quebrado conforme o exemplo abaixo:
> > > 01|001 1 101 001|0|04/02/2004|31/12/2999|ADMINISTRADOR...
> > > | | | |
> > > | | | |
> > >
> 01|001|1|101|001|0011101001|0|04/02/2004|31/12/2999|ADMINISTRADOR...
> >
> >
> > o problema é chato e a solucao dificil, mas funciona :)
> >
> >
> > $ echo $VAR
> > 01|0011101001|0|04/02/2004|31/12/2999|ADMINIST...
> >
> > $ echo $VAR |
> > sed 's/\([^|]*|\)\(\(...\)\(.\)\(...\)\(...\)\)/\1
> \3|\4|\5|\6|\2/'
> > 01|001|1|101|001|0011101001|0|04/02/2004|31/12/2999|ADMINIST...
> >
> >
> > se teu sed tiver a opção -r, aí não precisa dos escapes com \
> > e fica mais fácil de ler:
> >
> > $ echo $VAR |
> > sed -r 's/([^|]*\|)((...)(.)(...)(...))/\1\3|\4|\5|\6|\2/'
> > 01|001|1|101|001|0011101001|0|04/02/2004|31/12/2999|ADMINIST...
> >
> >
> > o conteúdo do primeiro ( ) é o primeiro campo, que nao interessa.
> > depois cada caractere . é marcado nos agrupamentos que você
> > indicou. depois tudo isso é trocado por:
> >
> > \1\3|\4|\5|\6|\2
> >
> > que é a formatação desejada, sendo cada \N uma referência ao
> > conteúdo de cada um dos grupos abertos antes com os parenteses.
> >
> > no fundo o conceito é simples, mas chato :)
> >
> > falou!
> >
> > =====
> > --
> > Aurelio Marinho Jargas, Curitiba, Conectiva
> > A odisseia verde no FISL http://aurelio.net/curso/fisl
> >
> >
>
______________________________________________________________________
> >
> > Participe da pesquisa global sobre o Yahoo! Mail:
> > http://br.surveys.yahoo.com/global_mail_survey_br
Re: [shell-script] Quebra de campos em registros de um arquivo., Aurelio Marinho Jargas, 2004/06/29
Re: [shell-script] Quebra de campos em registros de um arquivo., Marcos Tulio, 2004/06/29
Re: [shell-script] Quebra de campos em registros de um arquivo., Marcos Tulio, 2004/06/29