[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"