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

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

Re: [shell-script] Relatorio de Quebra


From: MrBiTs
Subject: Re: [shell-script] Relatorio de Quebra
Date: Sat, 09 Jul 2011 08:00:44 -0300
User-agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.15) Gecko/20110303 Lightning/1.0b2 Thunderbird/3.1.9

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 07/08/2011 23:23 , Guilherme Chagas wrote:
> Pessoal, boa noite.
> 
> Estou desenvolvendo um modulo de administração através de shell script, 
> já tenho um pronto em cobol, porém prefiro utilizar o shell.. Estou com 
> uma dificuldade na hora de gerar uma listagem de clientes onde os 
> campos(variáveis) tenham uma posição fixa, (Ex: Campo "nome" começa na 
> coluna 01, campo "email" na coluna 30 e assim por diante..).
> 
> Se alguém puder ajudar agradeço.

Que saudades do COBOL e dos CNAB400.

Eu suponho que voce saiba exaramente onde cada "campo"do seu registro de 
tamanho fixo comece e termine, então vamos usar uma
propriedade do bash (funciona na versão 3), que nos permite trabalhar com 
substring. Seu formato é:

SUBSTR=${REGISTRO:INICIO:QTDCHAR}

Imaginando que temos

CODIGO PIC 9(6).
NOME   PIC X(30).
SALARIO PIC 999999v99.

e temos registros assim (usei uma régua para controle):

         1         2         3         4
12345678901234567890123456789012345678901234
000001FULANO DE TAL                 00500000

você fará um laço para ler o arquivo e atribuirá uma variável, digamos, LINHA, 
para cada linha, e fará:

LINHA='000001FULANO DE TAL                 00500000'
CODIGO=${LINHA:0:6}     # à partir do char 0, pegue 6 posições;
NOME=${LINHA:6:30}      # à partir do char 6, pegue 30 posições;
SALARIO=${LINHA:36:8}   # à partir do char 36, pegue 8 posições;

Só tome cuidado, pois bash comprime espaços quando encntra mais de um. Proteja 
suas variáveis.

- -- 

LLAP

.0. MrBiTs - address@hidden
..0 GnuPG  - 
http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
000 http://www.mrbits.com.br


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iQEcBAEBCAAGBQJOGDTcAAoJEG7IGPwrPKWrOuUIAIm+6YtRPHcJSKwZqmADkE0p
BWI3/cyfK1EPxyH5n5o71wwSSii7r0uFri04FcbuT2lRlwnivaJ/1LBdJ2xfrBVi
RHtm3wj3oPgk7pq+uXtVd4mJ7QDt7huwPnCwRLO7/yuHYIAmj3pAomCjLvMbxObF
5yRqJP/nPXBqlY/2CGlUve9wmxa9o6lUfLhll/kpStacL2x4jXmT8ObfQyzNdyhE
SErohniVhkfavRzsmthNpmLC71/z28lSIAfnmVHfYl2Dfna+svVtOG5Ln9k0dt/O
96ziT6e9+T7XNKZ03eBIyX3rb6xLA/AVi+QrSBHMfbVr6FqeQd0CeHv0ZohabOI=
=lmfr
-----END PGP SIGNATURE-----


reply via email to

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