5
AWK AWK ALFERD ALFERD A A HO, PETER HO, PETER W W EINBERGER Y BRIAN EINBERGER Y BRIAN K K ERNIGHAN ERNIGHAN

Awk

Embed Size (px)

DESCRIPTION

Awk

Citation preview

Page 1: Awk

AWKAWKALFERD ALFERD AAHO, PETER HO, PETER WWEINBERGER Y BRIAN EINBERGER Y BRIAN

KKERNIGHANERNIGHAN

Page 2: Awk

QUE ES AWKQUE ES AWK

AWKAWK es un lenguaje de programación diseñado es un lenguaje de programación diseñado para procesar datos basados en texto, ya sean para procesar datos basados en texto, ya sean ficheros o flujos de datos. ficheros o flujos de datos.

fue una de las primeras herramientas en aparecer fue una de las primeras herramientas en aparecer en Unix y ganó popularidad como una manera de en Unix y ganó popularidad como una manera de añadir funcionalidad a las tuberías de Unix. Los añadir funcionalidad a las tuberías de Unix. Los comandos de AWK son las declaraciones sustituidas comandos de AWK son las declaraciones sustituidas por por acciónacción, pueden incluir llamadas a funciones, , pueden incluir llamadas a funciones, asignación de variables, cálculos, o cualquier asignación de variables, cálculos, o cualquier combinación de estas. AWK contiene soporte propio combinación de estas. AWK contiene soporte propio para muchas funciones; muchas otras son provistas para muchas funciones; muchas otras son provistas por las distintas versiones de AWK. Incluso algunas por las distintas versiones de AWK. Incluso algunas versiones soportan la inclusión de librerías versiones soportan la inclusión de librerías dinámicamente enlazadas, que pueden proveer aún dinámicamente enlazadas, que pueden proveer aún más funciones.más funciones.

Page 3: Awk

LINEAS DE COMANDOSLINEAS DE COMANDOS- Awk –F: ‘$3~/Administración/ {print $0}’ datosAwk –F: ‘$3~/Administración/ {print $0}’ datos

Como efecto de la orden, awk anterior, se recorre Como efecto de la orden, awk anterior, se recorre todas las líneas del archivo de datos buscando todas las líneas del archivo de datos buscando aquellas que cumpla la condición:aquellas que cumpla la condición:

$3~/administración/: condición cierta si el tercer $3~/administración/: condición cierta si el tercer campo ($3) contiene (~) el patrón campo ($3) contiene (~) el patrón /Administración/, es decir, si contiene los /Administración/, es decir, si contiene los caracteres Administración.caracteres Administración.

- Awk –F”: “ ‘{print $1 “ “ $3}’ datosAwk –F”: “ ‘{print $1 “ “ $3}’ datos

- Awk –F”: “ ‘{print “nombre: “ $1 “\t\ttitulacion: “ Awk –F”: “ ‘{print “nombre: “ $1 “\t\ttitulacion: “ $3 “\t\tedad: “ $2} ‘ datos $3 “\t\tedad: “ $2} ‘ datos

Page 4: Awk

SEPARADORES DE CAMPOSEPARADORES DE CAMPO

Uno de los aspectos mas útiles en relación al awk Uno de los aspectos mas útiles en relación al awk es que a diferencia del "sed", awk puede dividir es que a diferencia del "sed", awk puede dividir las líneas en campos a través de un separador de las líneas en campos a través de un separador de campo indicado en el script o en la línea de campo indicado en el script o en la línea de comandos. Si no se indica ninguno se tomara comandos. Si no se indica ninguno se tomara como separador de campo un espacio o tabulador. como separador de campo un espacio o tabulador. Usando la opción -F de la línea de comandos o la Usando la opción -F de la línea de comandos o la variable FS desde un programa hecho en awk se variable FS desde un programa hecho en awk se puede especificar un nuevo separador de campo.puede especificar un nuevo separador de campo.

- cat /etc/passwd | awk -F : '{print $5}'cat /etc/passwd | awk -F : '{print $5}' - cat /etc/passwd | awk -F : '{print $5,$6}'cat /etc/passwd | awk -F : '{print $5,$6}'

Page 5: Awk

VARIABLESVARIABLES existe la variable NR que llevara la cuenta de los existe la variable NR que llevara la cuenta de los

registros que mostremos, Por ejemplo supongamos registros que mostremos, Por ejemplo supongamos que necesitamos obtener un listado largo de un que necesitamos obtener un listado largo de un directorio, pero solo queremos ver los permisos, el directorio, pero solo queremos ver los permisos, el nombre del archivo y el número de registro que a nombre del archivo y el número de registro que a pasado por el awk.pasado por el awk.

- - ls -l | awk '{ print NR" "$1" "$9}'ls -l | awk '{ print NR" "$1" "$9}' ¿que ocurre si no sabemos la posición del último campo ¿que ocurre si no sabemos la posición del último campo

o esta varia? Para esto esta la variable NF que lleva la o esta varia? Para esto esta la variable NF que lleva la cuenta de la cantidad de campos de cada registro. Por cuenta de la cantidad de campos de cada registro. Por

ello en lugar de la anterior forma podriamos poner:ello en lugar de la anterior forma podriamos poner:

--ls -l | awk '{ print NR" "$1" "$NF}'ls -l | awk '{ print NR" "$1" "$NF}'