[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Formatação de arquivo orientado a colunas (cut)
From: |
Salvador S. Scardua |
Subject: |
Re: Formatação de arquivo orientado a colunas (cut) |
Date: |
Thu, 11 May 2006 09:39:43 -0300 |
Bem, aqui vai o arquivo para quem quiser se aventurar, estou testando o awk do
Fabiano Caixeta Duarte.
-----------------------------------------------------------------------------------------------------
Mensagem: 10
Data: Wed, 10 May 2006 19:16:32 -0300
De: "Tiago Barcellos Peczenyj" <address@hidden>
Assunto: Re: Formatação de arquivo orientado a colunas (cut)
Vamos por partes
Onde começa e onde termina uma linha nesse arquivo ?
Quantas linhas tem por 'registro' ?
On 5/10/06, Salvador S. Scardua <address@hidden> wrote:
> Estava aguardando ansioso por uma oportunidade de aprender ShellScript,
> Então que,
> quando eu menos esperava, meu patrão me deu uma tarefa que achei interessante
> tentar
> utilizar ShellScript, dediquei algum tempo de estudo mas cheguei a um
> impasse, não
> consigo formatar o arquivo (leia-se novato), o arquivo entrada é este, direto
> do Mainframe (SCO 5);
>
> -------------------------------------------------------------------------------
> 3.2.3.05.01.004 DEPRECIACOES 31/12/2005 0197 0,00
> 3.007,08
> TRANSF. SALDO ENC. EXERCICIO
> DEPRECIACOES 31/12/2005 0231 0,00
> 3.007,08
> TRANSF. SALDO ENC. EXERCICIO
> DEPRECIACOES 31/12/2005 0278 77,64
> 0,00
> VR DEPREC.CFE RELAT. 12/2005
> 3.2.3.05.01.005 MULTAS FISCAIS 22/12/2005 0119 95,44
> 0,00
> PG MULTA POR RETIF. DIA/DS
> SEFAZ
> MULTAS FISCAIS 22/12/2005 0121 0,00
> 756,00
> AV DE CREDITO REEMB.MULTA REV
> ICMS OUTROS LC 22 DO BR LTDA
> MULTAS FISCAIS 22/12/2005 0121 0,00
> 10.800,00
> AV DE CREDITO REEMB.MULTA
> ISOLADA ICMS LC 22 VALTRA DO BR
> 3.2.3.05.01.006 OUTRAS DESPESAS NAO 02/12/2005 0009 40,00
> 0,00
> PG MICHELLE REF FAXINA ESCRIT.
> CFE RECIBO
> OUTRAS DESPESAS NAO 02/12/2005 0009 40,00
> 0,00
> PG SIDNEI DE J. SILVA REF
> CAFE P/ LOJA CFE RECIBO
> OUTRAS DESPESAS NAO 02/12/2005 0009 32,00
> 0,00
> PG OSVALDO REF FRETE CFE
> RECIBO
> -------------------------------------------------------------------------------
>
> E deve ficar assim (saída);
>
> ---------------------------------------------------------------------------------------------------------------------------------------
> 3.2.3.05.01.004;DEPRECIACOES 31/12/2005 0197 + TRANSF. SALDO ENC.
> EXERCICIO;0,00;3.007,08
> 3.2.3.05.01.004;DEPRECIACOES 31/12/2005 0231 + TRANSF. SALDO ENC.
> EXERCICIO;0,00;3.007,08
> 3.2.3.05.01.004;DEPRECIACOES 31/12/2005 0278 + VR DEPREC.CFE RELAT.
> 12/2005;77,64;0,00
> 3.2.3.05.01.005;MULTAS FISCAIS 22/12/2005 0119 + PG MULTA POR RETIF.
> DIA/DS + SEFAZ;95,44;0,00
> 3.2.3.05.01.005;MULTAS FISCAIS 22/12/2005 0121 + AV DE CREDITO
> REEMB.MULTA REV + ICMS OUTROS LC 22 DO BR LTDA;0,00;756,00
> 3.2.3.05.01.005;MULTAS FISCAIS 22/12/2005 0121 + AV DE CREDITO
> REEMB.MULTA + ISOLADA ICMS LC 22 VALTRA DO BR;0,00;10.800,00
> 3.2.3.05.01.006;OUTRAS DESPESAS NAO 02/12/2005 0009 + PG MICHELLE REF
> FAXINA ESCRIT. + CFE RECIBO;40,00;0,00
> 3.2.3.05.01.006;OUTRAS DESPESAS NAO 02/12/2005 0009 + PG SIDNEI DE J.
> SILVA REF + CAFE P/ LOJA CFE RECIBO;40,00;0,00
> 3.2.3.05.01.006;OUTRAS DESPESAS NAO 02/12/2005 0009 + PG OSVALDO REF
> FRETE CFE + RECIBO;32,00;0,00
> ---------------------------------------------------------------------------------------------------------------------------------------
>
> Eu ia escrever em outra linguagem a solução, inclusive já havia até escrito
> o algoritmo (reescrevi em uma espécie de
> algol+shell), dêem uma olhada;
>
> ####################################################################
> ######## LOOP PARA PERCORRER TODO ARQUIVO, LINHA A LINHA ########
> ####################################################################
>
>
> if [[ `cut -c15` = [:digit:] ]] # Conteúdo da coluna 15 é um dígito?
> then
> $conta=`cut -c-15` # SIM, variável conta recebe Conteúdo
> do primeiro campo
>
> ####################################################################
> ######## LOOP PARA CAPTURAR TODO CONTEÚDO DA COLUNA DETALHES #######
> ######## Opções de Critério: CHECAR COLUNA ADIÇÔES OU EXCLUS.#######
> ####################################################################
>
> if [[ `cut -c64` = [:digit:] ]] # Conteúdo da coluna 64 é um dígitio?
> then
> $detalhes=`cut -c17-51` # SIM, colhe o conteúdo das colunas
> onde estão os valores
> $adicao=`cut -c53-65`
> $exclusao=`cut -c66-79`
> else
> $detalhes=$detalhes" + "`cut -c17-51` # NÃO, concatena o conteúdo
> de detalhes
> fi
> echo $conta\;$detalhes\;$adicao\;$exclusao >> arqformatado.csv #
> Descarrega o conteúdo das variáveis no arquivo
> fi
>
Salvador S. Scardua
Departamento de TI
Programador Junior
Pianna Com. Imp. Export. Ltda
27-3373 - 7527
address@hidden
address@hidden
---------------------------------------
[As partes desta mensagem que não continham texto foram removidas]