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