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

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

Re: [shell-script] Tratamento linha a linha


From: Gentil de Bortoli Júnior
Subject: Re: [shell-script] Tratamento linha a linha
Date: Wed, 15 Dec 2004 17:45:31 -0200
User-agent: Mozilla Thunderbird 1.0 (X11/20041206)

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.


reply via email to

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