[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:01:00 -0000 |
User-agent: |
eGroups-EW/0.82 |
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: Quebra de campos em registros de um arquivo.,
eoac <=
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