[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Awk e Arrays Associativos.
From: |
Tiago Barcellos Peczenyj |
Subject: |
Awk e Arrays Associativos. |
Date: |
Wed, 31 Oct 2007 13:38:21 -0200 |
Um grande problema para quem trabalha com arrays associativos no AWK é
com relação a ordem dos elementos quando esta fazendo uma iteração.
Ex:
$ gawk 'BEGIN{ split("5 4 2 1 3",T) ; for(i in T) print T[i]}'
1
3
5
4
2
Eu inseri, nessa ordem, 5, depois 4, depois 2... porém o acesso aos
elementos de um array em um for do tipo
for( variavel in array)
é imprevisive / incontrolável.
Agora vejamos isto:
$ WHINY_USERS=1 gawk 'BEGIN{ split("5 4 2 1 3",T) ; for(i in T) print T[i]}'
5
4
2
1
3
WOW! Através da variavel de ambiente do unix WHINY_USERS agora eu
consigo acessar os elementos na ordem em que eles foram inseridos no
array!
E para acessar os valores na ordem crescente:
$ WHINY_USERS=1 gawk 'BEGIN{ split("5 4 2 1 3",T)
asort(T) ; for(i in T) print T[i] }'
1
2
3
4
5
A variavel de ambiente WHINY_USERS *não* esta documentada no man,
muito menos na documentação que consegui a respeito do gawk. Descobri
esta dica no comp.lang.awk e, por incrivel que pareça, tive que
vasculhar o codigo fonte do gawk (graças a deus podemos fazer isso)
para entender melhor o que essa variavel poderia fazer (alem disso).
Enfim, fica a dica
--
Tiago B Peczenyj
Linux User #405772
http://peczenyj.blogspot.com/
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Awk e Arrays Associativos.,
Tiago Barcellos Peczenyj <=