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

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

Re: [shell-script] Filtrar arquivo texto tabulado


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Filtrar arquivo texto tabulado
Date: Tue, 3 Jun 2008 17:21:29 -0300

Vc poderia usar cut para pegar os caracteres de um ponto ao outro (
offset / tamanho )
Vc poderia usar expansão de variaveis para pegar os trechos ( offset / tamanho )
Vc poderia usar FIELDWIDTHS do gawk para pegar os dados da forma como vc quer:

$ cat file
0112312312312334aabbccddeeffgg20022009RSmoxxxyy666000

$ awk -v FIELDWIDTHS="2 14 14 8 2 2 3 2 6 1" '{ print "tipo = "$1",
cnpj = " $2 ", numero = "$9 }' file
tipo = 01, cnpj = 12312312312334, numero = 666000

basta vc informar a quantidade de caracteres separado por espaço (o 1
no final é bruxaria pra funcionar)

do man gawk

FIELDWIDTHS :
A  white-space separated list of fieldwidths.
When set, gawk parses the input into fields of fixed width, instead of
using the value of the FS variable as the field separator.

Beleza?

2008/6/3 Cristiano Ferrari <address@hidden>:
> Pessoal, boa tarde.
>
> Estou construindo um scprit para filtrar arquivos texto usados para
> intercâmbio com o fisco, o famoso sintegra.
>
> Este arquivo texto contém um registro por linha mas, ao invés de usar
> um delimitador, separa os campos por tamanho. E, para ajudar, dentro
> de um mesmo arquivo, há vários tipos de registros (tipo 50, tipo 54,
> tipo 74, etc) e para cada tipo de registro, há uma marcação diferente
> para os campos (variando pelo comprimento do campo).
>
> Por exemplo, nos registro do tipo 50, os campos são marcados assim:
>
> TIPO = 2 posições
> CNPJ = 14 posições
> IE = 14 posições
> DATA = 8 posições
> UF = 2 posições
> MODELO = 2 posições
> SERIE = 3 posições
> SUBSERIE = 2 posições
> NUMERO = 6 posições
>
> e por aí vai...
>
> Gostaria de saber qual seria a melhor maneira de eu filtrar este
> arquivo, atribuindo os valores listados em cada linha para estas
> variáveis, de modo a poder tratar o conteúdo do arquivo.
>
> Se o formato do arquivo usasse delimitadores, ao invés de comprimento
> para separar os campos, já sei como faria.
>
> Mas deste jeito, não tenho a menor idéia...
>
> Alguém me ajuda?
>
> Abraço...
>
> Cristiano
>
> 



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


reply via email to

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