[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Filtro para TXT - Campos com Comprimento Fixo
From: |
César A . K . Grossmann |
Subject: |
Re: Filtro para TXT - Campos com Comprimento Fixo |
Date: |
Wed, 10 Sep 2003 13:41:11 -0000 |
User-agent: |
eGroups-EW/0.82 |
--- Em address@hidden, "Gabriel Federizzi"
<gabriel@s...> escreveu
> E se vc usar: tr -s " " "|"
>
> para substituir cada conjunto de espaços por um | ou autra coisa do
genero.
> Assim você tem um separador.
Talvez eu não tenha explicado direito o problema. Suponha que eu tenho
o seguinte banco de dados (vou tentar colocar duas linhas, cada linha
é um registro, ok?):
E1199912100013
S1200001030015
Esquisito? Mas é mais ou menos isto que eu tenho, só que as linhas são
maiores. Examinando a documentação fornecida pelo cliente, eu sei que
o primeiro caracter ("E" na primeira linha, "S" na segunda") é o tipo
de registro, por exemplo, e "E" significa entrada enquanto "S"
significa saída. O segundo caracter ("1" nos dois registros do
exemplo) é um número de série, por exemplo. Os oito caracteres que
seguem são a data do movimento, por exemplo, e os quatro números que
restam são um códgio qualquer. Colocando esta informação na forma de
uma tabelinha, eu teria o seguinte:
Campo Posicao Comprimento
Tipo 1 1
Serie 2 1
Data 3 8
Codigo 11 4
Este seria o leiaute do arquivo fornecido. Eu não preciso tentar
adivinhar isto, ele é fornecido (embora às vezes o leiaute fornecido
não confira com o leiaute do arquivo, ou seja, está com erros). Só que
nem sempre este leiaute está no formato que eu preciso. Suponhamos no
exemplo acima que o cliente deveria ter entregue um leiaute um pouco
diferente, com o campo Codigo entre Serie e Data, e com um comprimento
de 3 posicoes, e Serie deveria ter duas posições, em vez de uma só. Ou
seja, o leiaute deveria ser:
Campo Posicao Comprimento
Tipo 1 1
Serie 2 2
Codigo 4 3
Data 7 8
O meu problema é escrever um programa que leia o arquivo original,
faça o desdobramento do mesmo nos campos *fornecidos*, e escreva o
arquivo no formato *desejado*. Um filtro, portanto...
Ficou mais claro?
[]s
--
César A. K. Grossmann
http://www.LinuxByGrossmann.cjb.net/