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

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

Re: Formatação de arquivo orientado a colunas (cut)


From: terra_lista
Subject: Re: Formatação de arquivo orientado a colunas (cut)
Date: Thu, 11 May 2006 13:25:52 -0000
User-agent: eGroups-EW/0.82

Amigos, sou novo no grupo, mas tenho bastante experiencia em Shell
Script, ja fiz coisas bem legais e gigantes.

Eu li todos os emails e nao estou entendendo muito bem o que deve ser
feito. Mas pelo que vi, ha maneiras mais faceis de fazer isso,
conseguiram fazer?
Vi que tem um arquivo, e a saida deve ficar igual ao outro arquivo,
mas tera cabecalho? As colunas serao alteradas.? 

Vamos fazer diversas maneiras de chegar a um resultado final, foi
assim que eu aprendi as melhores tecnicas e procedimentos para
programar melhor.

Espero ser bem vindo ao Grupo. 

Detalhe: Sou apaixonado por Shell Script e vejo muitos reclamarem que
é muito chato. Mas é linux puro.. hahah

Até mais, obrigado a todos pela oportunidade.







--- Em address@hidden, Fabiano Caixeta Duarte
<fcd@s...> escreveu
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Salvador (da Pátria?),
> 
> Em bash puro, só nosso amigo Júlio :) ( de preferência um one-liner )
> 
> Em awk arrisquei um primeiro rascunho. Utilize o manual do awk (man awk)
> para entender o que eu fiz. Em caso de dúvidas, é só perguntar que eu
> esclarecerei.
> 
> Detalhe importante: o script a seguir não trata a questão das linhas
> consecutivas contendo apenas descrição, conforme exemplo a seguir (fica
> para a segunda versão do script):
> >                 PG OSVALDO REF      FRETE CFE
> >                 RECIBO
> 
> Outra coisa, a construção /[0-9/]{10}/, ou seja, utilizando
> quantificadores "{}", insistiu em não funcionar aqui em casa... preciso
> descobrir por que. Por isto a ER meio troncha na linha 17.
> 
> Divirta-se ;)
> 
> ##########
> # Script #
> ##########
> 
> #!/usr/bin/awk -f
> 
> BEGIN {
>   FIELDWIDTHS="16 20 10 5 13 15"
> }
> 
> function trim(str){
>   gsub(/^[ ]+/,"",str)
>   gsub(/[ ]+$/,"",str)
>   return str
> }
> 
> $1 ~ /^[^ ]/ {
>   cod=$1
>   gsub(/[ ]/,";",cod)
> }
> {
>   if ($3 ~ /[0-3][0-9][/][0-1][0-9][/][0-9]/) {
>     desc=$2
>     data=$3
>     trans=trim($4)
>     negativo=trim($5)
>     positivo=trim($6)
>   }
>   else {
>       $1=""
>       print cod,desc,data,trans" +"$0";"negativo";"positivo
>   }
> }
> 
> Abraços!
> 
> Fabiano Caixeta Duarte
> Consultor em soluções para Redes de Computadores
> Linux User #195299
> Ribeirão Preto - SP
> 
> 
> Salvador S. Scardua escreveu:
> >   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
> >
---------------------------------------------------------------------------------------------------------------------------------------
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.7 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
> 
> iD8DBQFEYqqz++b4Zs4fOnMRAuvtAKCiW+3pr/Yj+Ikcdo/8l9gMY4WtBQCfenkc
> MbTiBdqyh8yp97fmHJINAPQ=
> =1a0T
> -----END PGP SIGNATURE-----
>







reply via email to

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