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

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

RES: [shell-script] Trabalhando com vetores e combinações em shell scrip


From: Rodolfo Villanova
Subject: RES: [shell-script] Trabalhando com vetores e combinações em shell script
Date: Tue, 27 May 2003 16:29:23 -0300

Tobias,


Agradeço a atenção que dedicaste ao tema. Tua explicação foi bastante 
inspiradora.

Acredito não haver me expressado com clareza, mas preciso montar algo 
semelhante para Korn Shell, que funcione sob Unix True64 (Compaq/HP) e SunOS.

Os testes que realizei com o excelente exemplo que elaboraste para ambiente 
bash infelizmente não funcionou como esperado naqueles ambientes.

Assim que obtiver sucesso nessa empreitada, retornarei o resultado à lista.


Obrigado,

Rodolfo Villanova


-----Mensagem original-----
De: Thobias Salazar Trevisan [mailto:address@hidden]
Enviada em: sábado, 24 de maio de 2003 13:33
Para: address@hidden
Assunto: Re: [shell-script] Trabalhando com vetores e combinações em
shell script



ae rodolfo,

On Fri, 23 May 2003, Rodolfo Villanova wrote:

> Queria algo do tipo que sei funcionar em bash:
>
> > declare -a alfabeto[]=(A B C D E F G H I J K L M N O P Q R S T
> > U V W X Y Z)
> > echo ${alfabeto[2]}
> > C

isso você pode usar o sed pra simular. olhe:

$ alfabeto='A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'
$ echo $alfabeto | sed  's/^\([^ ] \)\{4\}.*/\1/'
  D
$ echo $alfabeto | sed  's/^\([^ ] \)\{1\}.*/\1/'
  A
$ echo $alfabeto | sed  's/^\([^ ] \)\{20\}.*/\1/'
  T

Basta trocar o valor entre {}, para a posição desejada.


> Já queimei minha cota de fosfato em algumas alternativas de
> solução do seguinte desafio:
> Guardo num arquivo chaves de pesquisa com o seguinte formato:
> AA99, onde :
>       AA = combinação das letras do alfabeto, de AA até ZZ;
> e
>       99 = combinação dos numerais, de 01 até 99.
>
> Meu script vai pegar a última chave inserida na última linha
> desse arquivo e incrementar o valor para obter a próxima chave
> a ser criada, que será inserida no final desse mesmo arquivo.
>
> Alguém conhece uma alternativa simples, o "Ovo de Colombo"?
> Sei que seria mais fácil realizar isso utilizando outras linguagens,
> mas preciso fazê-lo em script Korn Shell.
> Também não vale mudar essa chave-identificadora para que seja
> somente numérica.
> Awk ou Sed me ajudariam de alguma forma?

acho que pra isto você precisa de od, awk, bc e sed ;)
como não sei o que funciona em Korn Shell, não otimizei muita
coisa, o código pode ser bem menor se utilizar algumas
construções simples de bash.
como está, fica mais fácil para você adaptar caso ocorra algum
problema no seu ambiente. Ah, e mais legível tamvém ;)

$ cat script.sh
#!/bin/bash

a=`echo $1 | cut -c1`
b=`echo $1 | cut -c2`
n=`echo $1 | cut -c3-4`

let n=$n+1
if [ $n = 100 ]
then
        n=0
        b=`echo -n $b | od -d | sed -n '1s/[^ ]* *//p'`+1
        b=`echo $b | bc`
        if [ $b -gt 90 ]
        then
                b=65
                a=`echo -n $a | od -d | sed -n '1s/[^ ]* *//p'`+1
                a=`echo $a | bc`
                if [ $a -gt 90 ]
                then
                        a=65
                fi
        fi
fi
echo $a $b $n | gawk '{printf("%c%c%02d\n",$1,$2,$3)}'
########################################################

Testando:

$ script.sh AA00
AA01

$ script.sh AA99
AB00

$ script.sh AZ99
BA00

$ script ZZ99
AA00

blz ?

thobias
-------



reply via email to

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