awk

Si se genera el fichero 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

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 del siguiente modo para que muestre solo las líneas con menos de
35 caracteres en el fichero /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=/
# run-parts

Si ingresamos el siguiente contenido en un fichero de texto:

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 de RS (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 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:
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 fichero 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 fichero 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

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

Anuncios

Deja un comentario...dicen que es gratis!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s