Oi Tiago,
Quando ele apresentou o problema pensei no AWK também, mas ele falou que
cada linha pode começar com tipo diferente... Tem como fazer isso
dinamincamente, interno ao awk? Algo como redefinir a cada linha em
função do primeiro campo...
Alain
Tiago Barcellos Peczenyj escreveu:
> 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.até
> 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 <[EMAIL PROTECTED]>:
>> 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
>>
>>
>
>
>