awk

Awk

Información
Desarrollado por Alfred Aho , Brian Kernighan y Peter J. Weinberger
Primera versión 1979
Última versión Estándar IEEE 1003.1-2008
Depositar openbsd.su/src/usr.bin/awk
Tipo Utilidad UNIX ( d )
Lenguaje de programación basado en datos ( d )
Lenguaje de scripting
Programación por procedimientos Programación
basada en datos ( en )

awk , que lleva el nombre de los tres creadores, Alfred Aho , Peter Weinberger y Brian Kernighan , es un lenguaje de procesamiento de archivos planos basado en líneas , disponible en la mayoría de los sistemas Unix y en Windows con MinGW , Cygwin o Gawk . Se utiliza principalmente para la manipulación de archivos de texto para operaciones complejas de búsqueda, reemplazo y transformación.

Presentación

Awk se utiliza con mayor frecuencia para la producción de archivos de texto con especificaciones particulares (intercambios entre diferentes sistemas de información heterogéneos). También se utiliza como archivos analizadores ( parser ) XML o archivos de texto para generar comandos SQL a partir de los datos extraídos. Finalmente, se puede utilizar para operaciones de cálculo complejas y formateo de datos sin procesar para hacer tablas estadísticas.

Distinguimos awk, el comando original, del nuevo awk (nawk), que llegó un poco más tarde al mercado. Las implementaciones GNU de awk son, de hecho, nuevas awk . El comando awk generalmente se encuentra en / usr / bin en Unix, pero algunos sistemas GNU / Linux lo colocan en / bin. Esto impone un shebang del tipo #!/usr/bin/env awk -fpara garantizar la máxima portabilidad de los scripts awk.

Actúa como un filtro programable tomando una serie de líneas como entrada (como archivos o directamente a través de la entrada estándar) y escribiendo en la salida estándar, que se puede redirigir a otro archivo o programa. Un programa Awk se compone de tres bloques distintos que pueden usarse o no para procesar un archivo (preprocesamiento, procesamiento, posprocesamiento). Awk lee la entrada línea por línea, luego selecciona (o no) las líneas para ser procesadas por expresiones regulares (y posiblemente números de línea). Una vez que se selecciona la línea, se divide en campos de acuerdo con un separador de entrada indicado en el programa awk por el símbolo FS (que por defecto corresponde al espacio o carácter de tabulación). Entonces los diferentes campos están disponibles en variables: $ 1 (primer campo), $ 2 (segundo campo), $ 3 (tercer campo),…, $ NF (último campo).

"Awk" es también la extensión de nombre de archivo que se usa para los scripts escritos en este idioma (rara vez se usa).

La sintaxis está inspirada en C  :
awk [options] [programme] [fichier]
donde está la estructura del programa:
'motif1 { action1 } motif2 { action2 } …'
Cada línea del archivo se compara sucesivamente con los diferentes patrones (la mayoría de las veces expresiones regulares , y globalmente una expresión booleana) y la acción del primer patrón que devuelve el valor verdadero. se ejecuta. Si no se acepta ningún motivo, el programa procede a procesar la siguiente línea.

Algunas opciones:

Descripción técnica

Un archivo se divide en líneas ( registros en inglés) a su vez divididos en campos ( campos en inglés)

Los separadores de entrada y salida se almacenan en variables y se pueden cambiar:

Disponemos de dos máscaras especiales:

Para definir un intervalo, usamos la coma así:

Varias funciones ya están implementadas:

Tenemos estructuras de control. La sintaxis proviene directamente de C:

En comparación con C, hay algunas extensiones:

Algunos ejemplos

Implementación

Existen varios programas que usan la sintaxis del awk original, aquí están los más famosos:

Ver también

Bibliografía

Artículos relacionados

enlaces externos