[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Formatação de arquivo orientado a colunas (cut)
From: |
Fabiano Caixeta Duarte |
Subject: |
Re: [shell-script] Formatação de arquivo orientado a colunas (cut) |
Date: |
Thu, 11 May 2006 00:08:35 -0300 |
User-agent: |
Thunderbird 1.5 (X11/20051201) |
-----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-----