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: Eliphas Levy Theodoro
Subject: Re: [shell-script] Tratamento linha a linha
Date: Thu, 16 Dec 2004 16:10:40 -0200 (BRST)

Bom, vamos definir um padrão então:

- arquivo com registros em linhas múltiplos de 3;
- dessas 3 linhas, a primeira é o "id" do "setor", digamos;
- a segunda é o registro que vai ser impresso;
- a terceira é separador.

Tou com um sed na cabeça, mas vamos tentar fazer com o while:

$ cat arquivo
A
uga|buga|ble

B
foo|bar|baz

C
lala|lele|lili

A
huguinho|zezinho|luizinho

$ cat script
#!/bin/sh
end=1
while read line; do
     if [ "$end" ]; then # começo de um novo registro
         id="$line"
         end=""
     elif [ "$id" ]; then # linha com o id
         echo -n "$line"
         # faz algo com o $id
         echo "|.$id."
         # feito
         id=""
         continue
     else
         end=1
         continue
     fi
done < arquivo

$ script
uga|buga|ble|.A.
foo|bar|baz|.B.
lala|lele|lili|.C.
huguinho|zezinho|luizinho|.A.

No lugar do echo "|.$id." você pode fazer o que quiser com o $id, pegar 
algo em banco de dados, etc. É isso?

-- 
Eliphas

Leonardo Ayres, @ 15/12/04 - 20:21:

> 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

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



reply via email to

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