shell-script-pt
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]