O que é um array no awk?

3

Sou muito novo no Unix e estou tentando aprender o básico awk scripting - durante o qual continuo encontrando a palavra "array" e "associative arrays". Eu não tenho ideia do que é isto; e não me diga para o RTFM porque li todas as explicações escritas possíveis, e simplesmente não entendo o que estão dizendo. (Eu mal entendo o que é uma variável).

Alguém pode, por favor, explicar em linguagem simples, simples e estúpida (e se você usar computerese, por favor, defina os termos) para uma pessoa não-computador?

O que é uma matriz? Por que eu precisaria usar um? Como eu uso uma matriz ou expresso um seja o que for em um script awk?

    
por Müt 13.02.2014 / 21:27

1 resposta

7

O que é uma matriz?

Arrays são indexados usando números, eles geralmente começam em 0 e vão para N-1 o número de elementos em uma matriz.

O que é uma matriz associativa?

Matrizes associativas são um par de valores-chave, muitas vezes chamado de hash. Em vez de usar um inteiro fixo para indexar a matriz, use um valor, uma string, para identificar cada elemento na matriz associativa.

Matrizes no Unix

Arrays (ambos os tipos) são usados em muitas das ferramentas do Unix. AWK e Bash são 2 e você provavelmente verá ambos usados se você fizer algum trabalho de script. Linguagens de programação como Perl, Python e Ruby também possuem esses tipos de dados.

Você pode conferir esta página que mostra exemplos de ambos os tipos de arrays no AWK, intitulados: Arrays AWK explicados com 5 exemplos práticos .

Exemplos

script de matriz - array.awk

$ cat array.awk 
#!/usr/bin/awk -f

BEGIN{
some_array[1] = "Hello"
some_array[2] = "Everybody"
some_array[3] = "!"
print some_array[1], some_array[2], some_array[3]
}

Execução da amostra:

$ ./array.awk 
Hello Everybody !

matriz associativa - assoc_arr.awk

$ cat assoc_arr.awk 
#!/usr/bin/awk -f

BEGIN{
  debts["Kim"] = 50
  debts["Roberto"] += 70
  debts["Vic"] -= 30
  print "Vic paid 30 dollars, but still owes", debts["Vic"]
}

Execução da amostra:

$ ./assoc_arr.awk 
Vic paid 30 dollars, but still owes -30

Por que eu precisaria usar um?

Arrays (ambos os tipos) são extremamente úteis ao lidar com conjuntos de dados relacionados. Se eu tiver um monte de medições de temperatura de uma cidade por um mês. Uma matriz seria ideal para armazenar esses valores. Armazená-los em uma matriz permite ao programador lidar com eles como um conjunto relacionado de coisas. Se eu apenas os armazenasse em variáveis, seria muito mais difícil escrever códigos para operar contra o conjunto, se eu dissesse que queria convertê-los de Fahrenheit para Centígrados.

Além disso, há meta-dados que você obtém gratuitamente usando esse tipo de estrutura de dados. Eles contêm automaticamente o número de elementos neles, então, se eu precisasse descobrir quantos valores foram coletados para o mês, eu simplesmente teria que descobrir o "tamanho" da matriz ou contar o número de elementos nela. , para adquirir esta informação.

Referências

por 13.02.2014 / 21:34

Tags