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

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

Re: [shell-script] Re: Tratamento linha a linha


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

Leonardo, eu não visualizei o seu problema corretamente.
Bom, eu fiz umas gambiarras, e isso não me agradou. Peço tb as dicas dos mais experientes.

Veja, eu criei um arquivo assim:

$cat Arquivo.txt
A
Gentil de Bortoli Júnior|Av. João Turin 1|(00) 111-1111

A
Leonardo Ayres|Rua Sem Nome 2|(00) 222-2222

B
Fulano da Silva|Jd. Botânico|(00) 333-3333
$

E o seguinte script:

#!/bin/bash
arquivo=${1:?"Sintaxe: ${0} <Arquivo>"}

clear
echo "Arquivo Original"
echo "-----------------------------------------"
cat ${arquivo}
echo "-----------------------------------------"
echo

i=0
for linha in `cat ${arquivo} | sed '/^$/d' | tr " " "#"`; do
    i=$((${i}+1))
    l[${i}]="${linha}"
done

echo "Arquivo Tratado"
echo "-----------------------------------------"
for linha in `seq ${i}`; do
    if [ "${l[${linha}]}" == "A" ]; then
        echo "${l[$((${linha}+1))]}|7" | tr "#" " "
    elif [ "${l[${linha}]}" == "B" ]; then
        echo "${l[$((${linha}+1))]}|3" | tr "#" " "
    elif [ "${l[${linha}]}" == "D" ]; then
        echo "${l[$((${linha}+1))]}|2" "#" " "
    fi
done
echo "-----------------------------------------"

Sobre o let, creio que o problema seja a versão do seu bash. Então troquei let i++ por i=$((${i}+1)).

O outro problema parece ser referente aos espaços existentes entre os nomes. Eu não soube contornar isso no for, e então fiz a gambiarra que eu não gostei.

Primeiro removi as linhas em branco com o sed e depois troquei os espaços em branco por "#".

No final, troqui "#" por espaço em branco novamente.
Não gostei dessa solução e por isso solicito dicas tb. :)

[]s


No meu shell eu tenho estes erros:

teste.sh: let: not found
teste.sh: l[0]=Customer: not found

"Customer" é uma parte do texto do arquivo. São vários erros deste tipo em seqüência até terminar o arquivo.


reply via email to

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