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

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

Filtro para TXT - Campos com Comprimento Fixo


From: César A . K . Grossmann
Subject: Filtro para TXT - Campos com Comprimento Fixo
Date: Mon, 08 Sep 2003 14:17:55 -0000
User-agent: eGroups-EW/0.82

Grande ALL!

Tenho um pequeno desafio de programação, e trata-se de outro filtro.

Suponha que você tenha um sistema que importe dados no formato TXT, um
registro por linha, campos com largura fixa, com um certo leiaute,
algo tipo:

Campo   Posicao Inicial Posicao Final
Nome    1               35
Ender   36              70
Bairro  71              90
Cidade  91              120
CEP     121             128
UF      129             130

Suponha que você receba este arquivo de várias pessoas diferentes, só
que cada uma faz uma exportação do sistema deles, seguindo um leiaute
próprio, como, por exemplo:

Campo   Posicao Inicial Posicao Final
Codigo  1               10
Nome    11              50
Ender   51              70
Bairro  71              90
Cidade  91              110
CEP     111             118
UF      119             120

Tem um campo a mais, e os outros campos tem alinhamento e largura
diferentes.

Não fica difícil, com a descrição acima, escrever um filtro para esta
importação, mas para fazer a importação de outros arquivos, com
diferentes formatos, seria necessário escrever novos filtros.

O ideal, a meu ver, seria se houvesse um filtro mais genérico, que
recebesse o leiaute da entrada e o leiaute de saída, e fizesse a
conversão.

Alguém sabe de alguma coisa no gênero? Pensei no AWK ou no SED, mas os
dois tem uma desvantagem: para trabalhar com registros em uma linha,
com comprimento fixo, não é exatamente direto... O AWK pede um
separador de campos (existe uma extensão no GNU AWK que possibilitaria
isto, mas a página do manual não é muito animadora sobre isto:
http://www.gnu.org/manual/gawk-3.1.1/html_node/Constant-Size.html#Constant%=
20Size
"Note: This program uses a number of awk features that haven't been
introduced yet").

No manual do SED eu não vi nada que possa me servir...

O Perl talvez seja de ajuda, mas eu teria que aprender aquela pérola...

Alguém tem alguma sugestão?

[]s
--
César A. K. Grossmann
http://www.LinuxByGrossmann.cjb.net/


reply via email to

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