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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Arquivo Zonado CNAB400


From: Julio C. Neves
Subject: Re: [shell-script] Arquivo Zonado CNAB400
Date: Wed, 27 Jan 2010 18:25:42 -0200

MrBiTs,
concordo com absolutamente tudo que vc disse, principalmente qto ao fato
dele não ter "limpado" a msg. Concordo tb com a sua sugestão de solução,
porém vou tentar implementá-la de acordo com a definição preguiçosa que o
Ernander deu.
$ Duplas=$(sed -r 's/^(...)...(...).*/\1,\2/' <<< "001 a 001 TIPO DE
REGISTRO = 0>
> 002 a 005 AGENCIA Preencher com zeros a esquerda
> 006 a 008 OPERAÇÃO Preencher com zeros a esquerda
> 009 a 017 CONTA Preencher com zeros a esquerda
> 018 a 019 TIPO DE EMPRESA)"
$ echo $Duplas
001,001 002,005 006,008 009,017 018,019
$ for i in $Duplas
> do
>     let Ini=10#$(cut -f1 -d, <<< $i)-1  #   10# é para dizer que é base
10, senão acha que a base é 8 por causa dos zeros
>     let Tam=10#$(cut -f2 -d, <<< $i)-$Ini  # idem
>     Saida=$Saida\;${Linha:$Ini:$Tam}
> done

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Em SP ligue (11)2125-4747;
- No RJ ligue (21)2210-6061;
- Em DF ligue (61) 3223-3000;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.


2010/1/27 MrBiTs <address@hidden>

>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
>
> On 01/27/2010 12:47 AM, Ernander (Nander) wrote:
> > Olá Lista!
> >
> > Tenho um Pequeno problema com um Arquivo Zonado. Para gerar um BOLETO em
> > umprograma que importa Arquivos TXT, eu preciso que essearq1uivo esteja
> > separado por ";" de acordo com o layout a seguir:
>
> Primeiro, umas dicas:
> - - Ao invés de mandar sua chave pública com a mensagem, assine-a. Mande
> sua chave publica para um keyserver e, quando alguém
> necessitar dela, pode ir buscá-la nele.
> - - Você não precisava enviar todo o layout do CNAB E ainda os exemplos ou
> valores de campos fixos. Vê-se que você simplesmente copiou
> e colou a coisa, com zero de preocupação com as pessoas que leriam o
> e-mail. Cinco exemplos seriam mais que suficientes. Isso abre
> berchas para algumas interpretações...
>
> Os CNAB são muito legais de se trabalhar. Acho que arquivos delimitados
> economizam espaço, mas os dados quadrados me remetem a boas
> lembranças.
>
> Você vai ter que tratar a linha toda como uma grande única string, e vai
> cortá-la em pedaços. Outras linguagens permitiriam a você
> mapear a linha, mas em shell eu faria algo como:
>
> LINHA="103218180360000910220755773000195Cesenge Engenharia Ltda"
>
> TPREG=${LINHA:0:1}
> TPEMP=${LINHA:1:2}
> CNPJ=${LINHA:3:15}
> CPF=${LINHA:18:15}
>
> E vai por aí. Você deve ter notado que o índice começa em 0 e que é sempre
> VARIAVEL:POSIÇÃO DE INÍCIO:QUANTIDADE DE POSIÇÕES.
>
> Depois é só ecoar as variáveis com seu delimitador entre elas. Lembre-se
> que ; é delimitador de comandos em shell (se não todos,
> pelo menos na maioria e, com certeza, você está sob um bash). Um echo
> $VAR;$VAR2 vai fazer o shell ecoar a $VAR e tentar executar
> $VAR2.
>
> - --
>
> Um abraço
>
> .0. MrBiTs - address@hidden <mrbits.dcf%40gmail.com>
> ..0 GnuPG -
> http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
> 000 http://www.mrbits.com.br
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
>
> iQEcBAEBCAAGBQJLX/yYAAoJEG7IGPwrPKWreU4H/R0nL/6yuMlyj21aqhktrEK0
> 2wUKd3RCkC/goie2wK3rVUo6gcXGwBJWTLbkhxvjsTq4mwlwMAODykbyRTorGIoR
> 5MXasUjxYQSlBrZhZBsEfyqysAisqbF8ig/yqcqDMnRsn8br9UIxL/XvcvqmaVo4
> XOKgWTktnCv4sQNvmlfWkjrb/nTu1+j9vRRWYEwzv+vXju7VMNMDCgpbjFZ4Fqyh
> dqidQoSOy82g3ZpiqC5gRwcarDyWbmyoHfFlDP0r+E0Db8DPTGIR3G+Pci1W9bZZ
> AyXpDpjdR1GjbpcAn1MVYBR5GPu5dUW7ldZoCKKlJ4hTBLTYPduToXLIj2rj2tQ=
> =Nel3
> -----END PGP SIGNATURE-----
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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