Script shell - Transformação de arquivo Linhas para colunas

1. Script shell - Transformação de arquivo Linhas para colunas

Helio Galvao
He2

(usa Ubuntu)

Enviado em 27/07/2015 - 09:20h

Bom dia Amigos,
Gostaria de um apoio do "feras"... rs. Tenho um arquivo texto como o formato abaixo:

INI000C025244 04/05/20151829BC1300 05/05/2015
001 1 01-20152142711532-24S 1637909825/05/2015BAHIA SERVICOS R F, DIST MANDIOCABA S N PARANAVAI 8772940076535764032185 04201516/04/201516/03/201515/05/2015 2910/05/201514/04/201505/06/20154402 002.879.563FATPRFD0F.39CA.925E.8CD4.F1AC.6362.3643.EC0B16/04/2015 B Responsavel pela manutencao da Iluminacao Publica: Municipio 156
002 1 01-20152142711532-24 52877 51879 998 34,41 0301241348 1 220/127 COMERCIAL, SERVICO-TRIFASICO CONVENCIONAL kWhANL 998 COMERCIAL, SERVICOS, OUTRAS ATIVIDADES TRIFASICO ATIV FRANQUEADAS E PERMIS CORREIO NAC 0,00
003 1 01-20152142711532-2401042015 99829LIDO 34,41 1157,44 783,31
003 1 01-20152142711532-2402032015 114531LIDO 36,93 1157,4427/04/2015 778,72
003 1 01-20152142711532-2403022015 122130LIDO 40,70 1157,4425/03/2015 701,80
003 1 01-20152142711532-2404012015 191030LIDO 63,66 1157,4425/02/2015 1.018,46
003 1 01-20152142711532-2405122014 112532MEDIA 35,15 1157,4426/01/2015 593,16
003 1 01-20152142711532-2406112014 134130LIDO 44,70 1157,4423/12/2014 699,15
003 1 01-20152142711532-2407102014 111632MEDIA 34,87 1157,4425/11/2014 588,73
003 1 01-20152142711532-2408092014 87230LIDO 29,06 1157,4427/10/2014 466,03
003 1 01-20152142711532-2409082014 112730MEDIA 37,56 1157,4430/09/2014 647,24
003 1 01-20152142711532-2410072014 83031LIDO 26,77 1157,4429/08/2014 375,12
003 1 01-20152142711532-2411062014 79530LIDO 26,50 1157,4430/07/2014 353,15
003 1 01-20152142711532-2412052014 100532LIDO 31,40 1157,4401/07/2014 439,31
003 1 01-20152142711532-2413042014 129828LIDO 46,35 1157,4430/05/2014 555,43
004 1 01-20152142711532-24PARANAVAI 10,29 1,87 7,59 1,00 5,48 1,87 1,63 1,00 1,05 O consumidor tem o direito de solicitar apuracoes dos indicadores DIC,FIC,DMIC e DICRI a qualquer tempo. 01/201502/2015 169,13 20,59 15,19 41,19 30,39
005 1 01-20152142711532-24 1ENERGIA ELET CONSUMO 998 0,364619 363,89kWh 363,89 29,00% 0,237010TH
005 1 01-20152142711532-24 2ENERGIA ELET USO SISTEMA 998 0,297475 296,88kWh 296,88 29,00% 0,193360TG
005 1 01-20152142711532-24 3ENERGIA CONS. B.VERMELHA 84,44kWh 84,44 29,00% TH
005 1 01-20152142711532-2423Total - Preco (1) 745,21
006 1 01-20152142711532-24 1CONT ILUMIN PUBLICA MUNICIPIO 38,10
006 1 01-20152142711532-2499Total - Outros (2) 38,10
007 1 01-20152142711532-24ICMS 29,00% 745,21 216,11 R$ 783,31 0,0333
007 1 01-20152142711532-24PIS/PASEP % 745,20 7,97
007 1 01-20152142711532-24COFINS % 745,20 36,74
008 1 01-20152142711532-24 1INCLUSO NA FATURA PIS R$7,97 E COFINS R$36,74 CONFORME RES. ANEEL 130/2005.
008 1 01-20152142711532-24 2FATURA AGRUPADA - NAO RECEBER
008 1 01-20152142711532-24 3A qualquer tempo pode ser solicitado o cancelamento de valores não relacionados
008 1 01-20152142711532-24 4à prestação do serviço de energia elétrica, como convênios e doações.
008 1 01-20152142711532-24 5Periodos Band.Tarif.: Vermelha:17/03-14/04
009 1 01-20152142711532-24
010 1 01-20152142711532-24425810 783,31 NAO RECEBER - FATURA AGRUPADA
011 1 01-20152142711532-24R F, -S N PARANAVAI - PR 87729400 011417-211 0301241348 DIST MANDIOCABA UB087366
013 1 01-20152142711532-24 127 117 133 220 202 231
015 1 01-20152142711532-24 1DISTRIBUICAO 92,35
015 1 01-20152142711532-24 2ENC. SETORIAIS 90,71
015 1 01-20152142711532-24 3ENERGIA 291,44
015 1 01-20152142711532-24 4TRANSMISSAO 9,89
015 1 01-20152142711532-24 5TRIBUTOS 260,82
015 1 01-20152142711532-24 6Soma Demonstrativo 745,21
FIM 277304/05/20151843111174


Gostaria de tratar o arquivo em shell (sed,awk e etc) e obter a seguinte saida...
> Os valores da linha que começa com 001 seriam os valores da primeira coluna, os valores das linhas que começam com 002 seriam as próximas colunas e assim sucessivamte até o final, no caso 015.
O resultado... seria ir transpondo as linhas na sequencia para colunas (abaixo um exemplo de saída, só que quero os valores após os números e removendo os número, abaixo somente para mostrar a sequencia):
001 002 003 003 003 003 003 003 003 003 003 003 003 003 003 004 005 005 005 005 006 006 007 007 007 008 008 008 008 008 009 010 011 013 015 015 015 015 015 015

Desde já agradeço a atenção.



  


2. Re: Script shell - Transformação de arquivo Linhas para colunas

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 27/07/2015 - 10:29h

olá,

pfvr edit seu post e coloque o texto exemplo dentro das tags [code]. Assim podemos ter a noção exata.


abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


3. Re: Script shell - Transformação de arquivo Linhas para colunas

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 27/07/2015 - 19:02h

Olá,
Nâo sei se entendi direito.
O que vc deseja migrar de linhas para colunas, certo?

Segue comando:
grep -v "^[a-zA-Z]" arq.old > arq.limpo && for i in $(seq 1 $(wc -l arq.limpo | sed 's/[^0-9]//1')); do  awk '{print$"$i"}' arq.limpo | paste -s >> arq.new; done 

ONDE:
arq.old: é o arquivo original (onde estão os dados brutos) ALTERE NO COMANDO PARA O NOME CORRETO
arq.limpo: GERADO AUTOMATICAMENTE. é o arquivo limpo, filtrando apenas as linhas que começam com numero.
arq.new: GERADO AUTOMATICAMENTE. é o arquivo final.

abs

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts