awk para loop com zeros à esquerda na variável

0

Eu quero executar um loop for em awk com zeros à esquerda na variável de índice.

Isso não é para imprimir um número com zeros à esquerda, que eu poderia facilmente manipular com uma instrução printf . É para verificar se o número fornecido (com zeros à esquerda) foi usado como um índice em uma matriz.

Então, o que eu realmente quero é percorrer os valores string em awk , de "01" a "14" (ou qualquer outra coisa).

Algo como:

myarray["01"]
myarray["02"]
myarray["04"]
myarray["05"]
# ... etc, up to "12"

for (i = 01; i <= 12; i++) {
  if (! (i in myarray)) {
    print i " is missing from myarray"
  }
}

Deve informar que "03 está faltando no myarray". Mas não é assim que funciona.

Como posso fazer isso?

    
por Wildcard 12.01.2016 / 04:26

1 resposta

3

Use apenas sprintf :

BEGIN {
  myarray["01"]
  myarray["02"]
  myarray["04"]
  myarray["05"]
  # ... etc, up to "12"

  for (i = 1; i <= 12; i++) {
    k = sprintf("%02d", i)
    if (! (k in myarray)) {
      print k " is missing from myarray"
    }
  }
}

deu a você:

03 is missing from myarray
06 is missing from myarray
07 is missing from myarray
08 is missing from myarray
09 is missing from myarray
10 is missing from myarray
11 is missing from myarray
12 is missing from myarray
    
por 12.01.2016 / 04:33

Tags