[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-----
>