[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Quebra de campos em registros de um arquivo.
From: |
Aurelio Marinho Jargas |
Subject: |
Re: [shell-script] Quebra de campos em registros de um arquivo. |
Date: |
Tue, 29 Jun 2004 17:53:55 -0300 (ART) |
ae,
--- eoac <address@hidden> 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 <=
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