robot de la enciclopedia para niños

AWK para niños

Enciclopedia para niños
Datos para niños
AWK
The-AWK-Programming-Language.svg
Awk-example.png
Alfred Aho, Brian Kernighan y Peter J. Weinberger
bell labs
Información general
Paradigma Programación dirigida por eventos, Programación imperativa
Apareció en 1977, última revisión 1985, la versión POSIX actual es IEEE Std 1003.1-2004
Diseñado por Alfred Aho, Peter Weinberger, and Brian Kernighan
Sistema de tipos débil, dinámico
Implementaciones awk, GNU Awk, mawk, nawk, MKS AWK, Thompson AWK (compilador), Awka (compilador)
Dialectos old awk oawk 1977, new awk nawk 1985, GNU Awk
Influido por C, Bourne shell, SNOBOL
Ha influido a Perl, Korn shell(ksh93, dtksh, tksh), JavaScript
Sistema operativo Multiplataforma

AWK es un lenguaje de programación especial. Fue creado para trabajar con información que está escrita en texto, como archivos o datos que fluyen. Su nombre, AWK, viene de las iniciales de los apellidos de sus creadores: Alfred Aho, Peter Weinberger y Brian Kernighan.

Cuando ves "awk" escrito todo en minúsculas, se refiere al programa de Unix o Plan 9 que entiende y ejecuta los programas que escribes en el lenguaje AWK.

AWK es muy útil porque puede buscar patrones en el texto usando algo llamado "expresiones regulares". También puede organizar datos en "listas asociativas", que son como listas donde cada elemento tiene un nombre único.

Este lenguaje fue una de las primeras herramientas importantes en el sistema Unix y se hizo muy popular. Hoy en día, casi todos los sistemas operativos tipo Unix tienen una versión de AWK.

AWK: Un Lenguaje para Procesar Texto

¿Qué es AWK y Para Qué Sirve?

AWK es un lenguaje de programación diseñado para manejar y transformar texto. Imagina que tienes un archivo lleno de información, como una lista de nombres y números. AWK te ayuda a buscar, filtrar y organizar esa información de manera rápida y eficiente. Es como un asistente inteligente para tus archivos de texto.

AWK es especialmente bueno para tareas como:

  • Encontrar líneas de texto que cumplen ciertas condiciones.
  • Extraer partes específicas de cada línea.
  • Calcular totales o promedios de números en un archivo.
  • Reorganizar la información de un archivo.

¿Cómo Funcionan los Programas AWK?

Un programa AWK recibe dos cosas:

  • Instrucciones: Un conjunto de reglas que le dicen a AWK qué hacer.
  • Datos: El archivo de texto que AWK va a procesar.

Un programa AWK típico está formado por líneas que tienen esta forma: `/patrón/ { acción }`

Aquí, patrón es lo que AWK busca en cada línea del archivo. Si una línea coincide con el patrón, AWK ejecuta la acción que le indicaste.

Patrones y Acciones: La Base de AWK

AWK revisa el archivo de entrada línea por línea. Cuando encuentra una línea que coincide con el patrón, realiza la acción que le pediste.

También hay otras formas de dar instrucciones:

  • `BEGIN { acción }`: Ejecuta estas acciones al principio, antes de que AWK empiece a leer los datos.
  • `END { acción }`: Ejecuta estas acciones al final, después de que AWK haya procesado todos los datos.
  • `/patrón/`: Si solo pones un patrón, AWK imprimirá las líneas que coincidan con él.
  • `{ acción }`: Si no pones un patrón, AWK ejecutará la acción para cada línea del archivo.

Puedes usar varias de estas formas en un mismo programa. AWK las procesa en el orden en que aparecen.

AWK fue creado para reemplazar programas más complejos escritos en C que hacían tareas de análisis de texto.

Comandos Básicos de AWK

Los comandos de AWK son las instrucciones que le das para que realice una acción. Pueden ser llamadas a funciones, asignar valores a variables o hacer cálculos.

El Comando "print"

El comando `print` se usa para mostrar texto o información.

  • `print`: Muestra el contenido de la línea que se está procesando en ese momento.
  • `print $1`: Muestra solo la primera parte (o "campo") de la línea actual.
  • `print $1, $3`: Muestra la primera y la tercera parte de la línea, separadas por un espacio.

El símbolo `$` seguido de un número (`$1`, `$2`, etc.) se refiere a las diferentes partes de una línea. `$0` se refiere a la línea completa. Por eso, `print` y `print $0` hacen lo mismo.

También puedes usar `print` para mostrar el resultado de cálculos o funciones:

  • `print 3+2`
  • `print sin(3-2)`

Puedes enviar lo que `print` muestra a un archivo: `print "texto" > "nombre_de_archivo"`

Variables en AWK

Las variables son como cajas donde puedes guardar información. Sus nombres pueden tener letras, números y guiones bajos. AWK usa los operadores `+`, `-`, `*`, `/` para sumar, restar, multiplicar y dividir. Para unir textos, solo tienes que ponerlos juntos. Los textos se escriben entre comillas dobles.

Puedes añadir comentarios a tu programa usando `#` al principio de una línea. Esto ayuda a explicar lo que hace tu código.

Creando Tus Propias Funciones

Puedes crear tus propias funciones en AWK para reutilizar bloques de código. Una función se define con la palabra `function`, seguida de su nombre, los argumentos (la información que necesita para trabajar) y las acciones que realiza.

Por ejemplo:

 function sumar_tres (numero, temporal) {
   temporal = numero + 3
   return temporal
 }

Para usarla, simplemente la llamas: `print sumar_tres(36)` (Esto mostrará `39`)

Las funciones pueden tener variables que solo existen dentro de ellas.

Ejemplos Prácticos de AWK

Aquí tienes algunos ejemplos sencillos de lo que AWK puede hacer:

"¡Hola, mundo!" con AWK

Este es un programa muy básico que solo imprime un mensaje:

 BEGIN { print "¡Hola, mundo!"; exit }

Encontrar Líneas Largas

Este programa imprime todas las líneas que tienen más de 80 caracteres:

 length > 80

Contar Palabras y Caracteres

Este programa cuenta cuántas líneas, palabras y caracteres hay en el texto de entrada:

 { w += NF; c += length}
 END { print NR, w, c }

Sumar Números en una Columna

Si tienes un archivo con números en la primera columna, este programa suma todos esos números:

 { s += $1 }
 END { print s }

Frecuencia de Palabras

Este programa cuenta cuántas veces aparece cada palabra en el texto:

 BEGIN { FS="[^a-zA-Z]+"}
 
 { for (i=1; i<=NF; i++)
      words[tolower($i)]++
 }
 
 END { for (i in words)
     print i, words[i]
 }

Programas AWK Independientes

Puedes crear programas AWK que se ejecuten directamente, como cualquier otro programa. Para ello, se usa una línea especial al principio del archivo, llamada "Shebang".

Por ejemplo, un archivo llamado `holamundo.awk` que imprime "¡Hola, mundo!" podría ser así:

 #!/usr/bin/awk -f
 BEGIN { print "¡Hola, mundo!"; exit }

Versiones e Implementaciones de AWK

AWK fue creado por primera vez en 1977.

El AWK Original y el "Nuevo AWK"

En 1985, los creadores expandieron el lenguaje, añadiendo más funciones. Esta nueva versión se conoce a veces como "nuevo AWK" o "nawk". En 1996, esta versión se hizo disponible como software libre.

GNU Awk (gawk)

GNU Awk, o gawk, es otra versión de AWK que es muy popular y también es software libre. Es la versión que se usa en la mayoría de los sistemas Linux.

Otras Versiones de AWK

  • mawk: Es una versión de AWK que está optimizada para ser muy rápida.
  • Thompson AWK (TAWK): Es una versión de AWK que puede convertir tus programas en archivos ejecutables para sistemas como MS-DOS y Microsoft Windows.

Galería de imágenes

Véase también

Kids robot.svg En inglés: AWK Facts for Kids

  • sed
  • Lista de programas para Unix
kids search engine
AWK para Niños. Enciclopedia Kiddle.