[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Tratamento linha a linha
From: |
Leonardo Ayres |
Subject: |
Re: Tratamento linha a linha |
Date: |
Wed, 15 Dec 2004 20:21:21 -0000 |
User-agent: |
eGroups-EW/0.82 |
Olá Gentil,
O problema é mais ou menos este sim.
É necessário incluir mesmo este trecho de código:
for linha in `cat Teste.txt`; do
let i++
l[${i}]=${linha}
done
Na verdade, eu teria um arquivo de entrada assim:
A
nome1|endereco1|telefone1
B
nome2|endereco2|telefone2
D
nome3|endereco3|telefone3
D
nome4|endereco4|telefone4
A
nome5|endereco5|telefone5
B
nome6|endereco6|telefone6
E teria que resultar um arquivo do tipo:
nome1|endereco1|telefone1|7
nome2|endereco2|telefone2|3
nome3|endereco3|telefone3|2
nome4|endereco4|telefone4|2
nome5|endereco5|telefone5|7
nome6|endereco6|telefone6|3
Onde, dependendo do que veio antes, eu coloco um código depois, que
eu vou buscar na base de dados.
Acrescente a este problema, que eu tenho uma linha em branco a cada
duas linhas:
A
nome1|endereco1|telefone1
B
nome2|endereco2|telefone2
D
nome3|endereco3|telefone3
D
nome4|endereco4|telefone4
A
nome5|endereco5|telefone5
B
nome6|endereco6|telefone6
--- Em address@hidden, Gentil de Bortoli Júnior
<listas@b...> escreveu
> Leonardo, dei uma pirada aqui. Não sei se é o que vc quer mas, de
qq
> forma, pode servir como exemplo.
>
> Veja.
>
> $cat Teste.txt
> AAA
> BBB+
> CCC
> DDD
> EEE
> FFF+
> GGG+
> HHH
> III
> JJJ+
> KKK
>
> Aí fiz um script assim:
>
> ----------------------------8<----------------------------
>
> #!/bin/bash
> clear
> echo "Arquivo Original"
> echo "-----------------------------------------"
> cat Teste.txt
> echo "-----------------------------------------"
> echo
>
> codigo="+"
>
> for linha in `cat Teste.txt`; do
> let i++
> l[${i}]=${linha}
> done
>
> echo "Arquivo Tratado"
> echo "-----------------------------------------"
> for linha in `seq ${i}`; do
> if [ `echo ${l[${linha}]} | grep "${codigo}"` ]; then
> echo "${l[${linha}]}"
> echo "####${l[$((${linha}+1))]}####"
> else
> echo "${l[${linha}]}"
> fi
> done
> echo "-----------------------------------------"
>
> ---------------------------->8----------------------------
>
> E o resultado desse script é esse:
>
> Arquivo Original
> -----------------------------------------
> AAA
> BBB+
> CCC
> DDD
> EEE
> FFF+
> GGG+
> HHH
> III
> JJJ+
> KKK
> -----------------------------------------
>
> Arquivo Tratado
> -----------------------------------------
> AAA
> BBB+
> ####CCC####
> CCC
> DDD
> EEE
> FFF+
> ####GGG+####
> GGG+
> ####HHH####
> HHH
> III
> JJJ+
> ####KKK####
> KKK
> -----------------------------------------
>
> Ou seja, as linhas abaixo daquelas que possuem um sinal de "+"
> são mostradas entre "####".
>
> Bom, eu não dou as melhores soluções por aqui. De repente surge
algo
> bem simples, em uma linha. :)
>
> Se precisar de alguma explicação, peça.
>
> []s
> Gentil.
>
> Leonardo Ayres wrote:
> >
> > Pessoal,
> >
> > Eu preciso tratar um arquivo linha por linha. Como eu faço isso
num
> > shell?
> >
> > O arquivo tem numa linha, um codigo e dependendo do codigo de uma
> > linha, eu dou um tratamento diferente à linha seguinte.
Re: [shell-script] Tratamento linha a linha, Nicole, 2004/12/15
Re: [shell-script] Tratamento linha a linha, Rafael Quirino, 2004/12/15