Un ejemplo básico de un Array - AWK

El siguiente programa toma una lista de líneas, cada una comenzando con un número de línea, y las imprime en orden del número de línea. Los números de línea no están en orden. Este programa ordena las líneas creando un array usando los números como subíndices. Después imprime las líneas ordenadas por sus números. Es un programa muy simple, y se confunde si encuenta números repetidos, huecos o líneas que no comiencen con un número.

{
if ($1 > max) max = $1
arr[$1] = $0
}
END {
for (x = 1; x <= max; x++) print arr[x]
}

La primera regla guarda el número de línea más alto leído hasta el momento; también guarda cada línea en el array arr, en un índice que es el número de línea.

La segunda regla se ejecuta después de que se hayan leído toda la entrada, para imprimir todas las líneas.

Cuando este programa se ejecuta con la siguiente entrada:

  • 5 I am the Five man
  • 2 Who are you? The new number two!
  • 4 . . . And four on the floor
  • 1 Who is number one?
  • 3 I three you.

su salida es la siguiente:

  • 1 Who is number one?
  • 2 Who are you? The new number two!
  • 3 I three you.
  • 4 . . . And four on the floor
  • 5 I am the Five man

Si se repite un número de línea, la última línea con dicho número repetido es la que permanece. Los huecos en números de línea pueden ser manejados con una fácil mejora a la regla END del programa:
END {
for (x = 1; x <= max; x++) if (x in arr)
print arr[x]
}
























Publicar un comentario

0 Comentarios