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

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

Re: [shell-script] Contar registros posicionais


From: itamarnet
Subject: Re: [shell-script] Contar registros posicionais
Date: 14 Jul 2016 16:26:26 -0700

Caro Lendro

Para constar, esse trecho que citei no primeiro e-mail deve ser evitado
$0 !~ /^[09]{5}/
E justifico, nesse caso a ER vai filtrar o 00000 e 99999, ma também pode filtrar 00009 ou 90900.
Melhor usar no lugar:
$0 !~ /^(0|9){5}/ ou $0 !~ /^(00000|99999)/

Mas para esse caso que vc citou podemos trocar por esse awk:

awk '
  /^0{5}/ { dt_mov=substr($0,13,8); nm_programa=substr($0,21,8) }
  $0 !~ /^(0|9){5}/ { linha[substr($0,1,3) ";" substr($0,10,4)]++ }
  END { for (final in linha) print final ";" linha[final] ";" dt_mov ";" nm_programa }
'

E na primeira linha do código, no lugar de:
/^0{5}/ { dt_mov=substr($0,13,8); nm_programa=substr($0,21,8) }

Se o HEADER for sempre na primeira linha, pode ser:
NR==1 { dt_mov=substr($0,13,8); nm_programa=substr($0,21,8) }
Isso se houver apenas um HEADER

E se houver mais de um TRAILLER e não apenas no final, no lugar de:
END { for (final in linha) print final ";" linha[final] ";" dt_mov ";" nm_programa }
pode-se trocar por:
/^9{5}/ { for (final in linha) print final ";" linha[final] ";" dt_mov ";" nm_programa; split("", linha) }


Isso ajuda?

[]'s
Itamar
reply via email to

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