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

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

Help num script


From: Roberto de Luca
Subject: Help num script
Date: Sat, 8 Dec 2001 13:24:48 -0200

Oi.

É a primeira vez que escrevo e já venho trazendo problema. Sou novato em no 
Unix (minha praia é mais VB) e estou me aventurando com o Bash agora, e espero 
que alguém possa me ajudar com meu problema: 

Eu recebo um arquivo onde cada registro de dados tem 5 campos (sem separador 
nenhum), e com dois pontos como separador de campos. Vai um exemplo abaixo:

Campo1:ABC
Campo2:DEF
Campo3:GHI
Campo4:JKL
Campo5:MNO
Campo1:PQR
Campo2:STU
Campo3:VWX
Campo4:YZA
Campo5:BCD

Eu preciso uma script para simplemente ler este arquivo e produzir outro 
arquivo no seguinte formato:

ABC:DEF:GHI:JKL:MNO
PQR:STU:VWX:YZA:BCD

Ou seja, de 5 em 5 linhas, eu vou lendo o segundo campo do arquivo original e 
gravo uma única linha com os cinco campos, criando um arquivo com um registro 
por linha, separando de campos com dois pontos. O nome do campo eu nao vou 
necessitar no mer arquivo de saida.

A primeira idéia que me veio a cabeça foi criar um array de 5 posições, lendo 
os dados num "for" de 1 a 5 (ou 0 a 4), armazenando cada passada numa variável 
e, na saída do "for" gravar a variável com "echo". E ir fazendo isso até o fim 
do arquivo. 

Outra coisa que acontece é que se algum campo estiver vazio, o arquivo original 
vem assim:
Campo4:
Ou seja, o programa que gera o arquivo original Considera os campos vazios e 
manda nenhum dado. Por isso é que posso garantir que a montagem do registro 
será sempre de 5 em 5.

Gostaria de fazer com o Bash mesmo (esta rotina vai ser incluida num script 
maior), mas for mais fácil a solução com Perl, pode mandar que eu faço uma 
chamada externa.

Agradeço qualquer ajuda que puderem me dar, e desculpem o pelo meu primeiro 
mail ter sido um pouco longo, e trazendo só problema :) .

De Luca



[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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