7
 EJEMPLOS DE USO AWK. La sintaxis general utilizada para el mandato awk sigue el siguiente patrón: awk 'expresión-regular { orden }' A continuación se mostrarán ejemplos del uso de AWK. El siguiente mandato específica que al inicio se imprima en la salida la frase "Hola mundo" y terminar el procesamiento. awk 'BEGIN { print "Hola mundo"; exit }' Lo anterior deberá devolver una salida como la siguiente: Hola mundo Si se genera el archivo prueba.txt del siguiente modo: echo -e "Columna1\tColumna2\tColumna3\tColumna4\n" > ejemplo.txt Y se visualiza con el mandato cat: cat ejemplo.txt Devolverá el siguiente contenido: Columna1 Columna2 Columna3 Columna4

Ejemplos de Uso Awk

Embed Size (px)

DESCRIPTION

Esta es una pequeña guia del uso del comando AWK

Citation preview

Page 1: Ejemplos de Uso Awk

5/11/2018 Ejemplos de Uso Awk - slidepdf.com

http://slidepdf.com/reader/full/ejemplos-de-uso-awk 1/7

 

EJEMPLOS DE USO AWK.

La sintaxis general utilizada para el mandato awk sigue el siguiente patrón:

awk 'expresión-regular { orden }'

A continuación se mostrarán ejemplos del uso de AWK.

El siguiente mandato específica que al inicio se imprima en la salida la frase "Hola mundo" y terminar el

procesamiento.

awk 'BEGIN { print "Hola mundo"; exit }'

Lo anterior deberá devolver una salida como la siguiente:

Hola mundo

Si se genera el archivo prueba.txt del siguiente modo:

echo -e "Columna1\tColumna2\tColumna3\tColumna4\n" >

ejemplo.txt

Y se visualiza con el mandato cat:

cat ejemplo.txt

Devolverá el siguiente contenido:

Columna1 Columna2 Columna3 Columna4

Page 2: Ejemplos de Uso Awk

5/11/2018 Ejemplos de Uso Awk - slidepdf.com

http://slidepdf.com/reader/full/ejemplos-de-uso-awk 2/7

 

Si se utiliza el mandato awk para que solo muestre la columna 1 y la columna 3 del siguiente modo:

awk '{ print $1, $3}' ejemplo.txt

La salida devolverá lo siguiente:

Columna1 Columna3

Si se utiliza el mandato awk para que solo muestre la columna 3 y la columna 1, en ese orden, del

siguiente modo:

awk '{ print $3, $1}' ejemplo.txt

La salida devolverá lo siguiente:

Columna3 Columna1

Si se añaden datos al archivo ejemplo.txt del siguiente modo:

echo -e "Dato1\tDato2\tDato3\tDato4\n" >> ejemplo.txt

echo -e "Dato5\tDato6\tDato7\tDato8\n" >> ejemplo.txt

echo -e "Dato9\tDato10\tDato11\tDato4\12" >> ejemplo.txt

Y se visualiza con el mandato cat:

cat ejemplo.txt

Page 3: Ejemplos de Uso Awk

5/11/2018 Ejemplos de Uso Awk - slidepdf.com

http://slidepdf.com/reader/full/ejemplos-de-uso-awk 3/7

 

Devolverá el siguiente contenido:

Columna1 Columna2 Columna3 Columna4

Dato1 Dato2 Dato3 Dato4

Dato5 Dato6 Dato7 Dato8

Dato9 Dato10 Dato11 Dato4

Si se utiliza nuevamente el mandato awk para que solo muestre la columna 1 y la columna 3 del

siguiente modo:

awk '{ print $1, $3}' ejemplo.txt

La salida devolverá lo siguiente:

Columna1 Columna3

Dato1 Dato3

Dato5 Dato7

Dato9 Dato11

Si se utiliza el mandato awk del siguiente modo para que solo muestre solo la línea cuya columna

contenga la expresión regular Dato5:

awk '/Dato5/ { print }' ejemplo.txt

La salida devolverá lo siguiente:

Dato5 Dato6 Dato7 Dato8

Page 4: Ejemplos de Uso Awk

5/11/2018 Ejemplos de Uso Awk - slidepdf.com

http://slidepdf.com/reader/full/ejemplos-de-uso-awk 4/7

 

Si se utiliza el mandato awk del siguiente modo para que solo muestre solo la línea cuya columna

contenga la expresión regular Dato5, y además solo las columnas 1 y 4:

awk '/Dato5/ { print $1, $4}' ejemplo.txt

La salida devolverá lo siguiente:

Dato5 Dato8

Si se utiliza el mandato awk del siguiente modo para que muestre solo las líneas con más de 35

caracteres en el archivo /etc/crontab:

awk 'length > 35' /etc/crontab

La salida devolverá lo siguiente:

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

Si se utiliza el mandato awk del siguiente modo para que muestre solo las líneas con menos de 35

caracteres en el archivo /etc/crontab:

awk 'length < 35' /etc/crontab

La salida devolverá lo siguiente:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

Page 5: Ejemplos de Uso Awk

5/11/2018 Ejemplos de Uso Awk - slidepdf.com

http://slidepdf.com/reader/full/ejemplos-de-uso-awk 5/7

 

 

# run-parts

Utiliza vi para crear el archivo usuario.txt:

vi usuario.txt

Ingrese el siguiente contenido:

Fulano Algo

Calle Mengana 123

Colonia Perengana

Ciudad de Zutano, C.P. 123456

Para que el mandato awk reconozca cada línea como un registro completo, en lugar de considerar cada

palabra como una columna, se utiliza 'BEGIN { FS="\n" ; RS=""}', donde el valor de FS(Field Separator

o separador de campo) se establece como un retorno de carro y el valor deRS (Record Separator o

separador de registro) se establece como una línea vacía. Si utiliza el siguiente mandato donde se

establecen los valores mencionados para FS y RS y se pide se impriman los valores de cada registro

(cada línea) separados por una coma y un espacio:

awk 'BEGIN { FS="\n"; RS="" } { print $1 ", " $2 ", " $3 ", "

$4 }' usuario.txt

La salida devolverá lo siguiente:

Fulano Algo, Calle Mengana 123, Colonia Perengana, Ciudad de

Zutano, C.P. 123456

El mandato awk puede realizar conteo de líneas, palabras y caracteres. El siguiente mandato se

establece que el valor de w sea igual al número de campos (New Field o NF), c sea igual la longitud de

cada campo, y que se imprima el número de campos, el valor de w y el valor de c:

Page 6: Ejemplos de Uso Awk

5/11/2018 Ejemplos de Uso Awk - slidepdf.com

http://slidepdf.com/reader/full/ejemplos-de-uso-awk 6/7

 

awk '{ w += NF; c += length} \

END { print \

"Campos: " NR , "\nPalabras: " w, "\nCaracteres: " c }' \

usuario.txt

La salida devolverá lo siguiente:

Campos: 4

Palabras: 12

Caracteres: 74

Genere el archivo numeros.txt con el siguiente contenido, donde las columnas serán separadas por un

tabulador:

1 2 3 4

5 6 7 8

9 10 11 12

El mandato awk puede realizar operaciones matemáticas. el siguiente mandato establece que s es igual

a la suma del valor de los campos de la primera columna del archivo numeros.txt, e imprime el valor de

s:

awk '{ s += $1 } END { print s }' numeros.txt

La salida devolverá lo siguiente (resultado de la suma de 1+5+9):

15

Si se hace lo mismo, pero con los valores de la columna 2:

awk '{ s += $2 } END { print s }' numeros.txt

Page 7: Ejemplos de Uso Awk

5/11/2018 Ejemplos de Uso Awk - slidepdf.com

http://slidepdf.com/reader/full/ejemplos-de-uso-awk 7/7

 

La salida devolverá lo siguiente (resultado de la suma de 2+6+10):

18

Para hacer conteo de frecuencia de palabras, Se establece que el valor para FS(Field Separator o

separador de línea) sea igual a expresiones regulares que van desde la a a la z y desde la A a la Z, se

establece que el valor de la variable i es igual a 1 y menor al número de campos.

awk 'BEGIN { FS="[^a-zA-Z]+"} \

{ for (i=1; i<=NF; i++) words[tolower($i)]++ } \

END { for (i in words) print i, words[i] }' /etc/crontab

La salida devolverá lo siguiente:

7

bin 3

run 5

etc 4

sbin 3

bash 1

weekly 1

daily 1

cron 4

usr 2

path 1

shell 1

parts 5

home 1

mailto 1

monthly 1

hourly 1

root 6