Está en la página 1de 5

Introduccin a AWK

1 de 5

http://www.alcancelibre.org/staticpages/index.php/introduccion-awk

Ingresar | Registrarse | Enviar Nota

Twitter

Portada

Sondeo
Qu opinas de ALDOS?

Foros

Manuales

Servicios

Cursos Linux

Google+

Descargas

Servicios

Buscar...

Junio y Julio, Curso Global de Servidores con CentOS 6.


Taller de programacin de Python.
Curso de programacin de PHP.
Prueba ALDOS 1.4.4. Nuestro sistema operativo para escritorio.

Introduccin a AWK

Has probado ALDOS 1.4?


Si

Autor: Joel Barrios Dueas

No

Correo electrnico: darkshram en gmail punto com

Este sondeo tiene 3 preguntas ms.

Iniciar Sondeo
Resultados

Sitio de Red: http://www.alcancelibre.org/


Jabber ID: darkshram@jabber.org
Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

Ms sondeos | 333 votos

1999-2012 Joel Barrios Dueas. Usted es libre de copiar, distribuir y comunicar pblicamente la obra y hacer obras derivadas bajo las
condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su
publicacin, a trav s de cualquie r medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada,
slo puede distribuir la obra generada bajo una licencia idntica a sta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la
licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos
derivados de usos legtimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La informacin contenida en
este documento y los derivados de ste se proporcionan tal cual son y los autores no asumirn responsabilidad alguna si el usuario o lector, hace
mal uso de stos. Esta licencia de ber aparecer como primer texto del documento distribuido

Introduccin.
Acerca de AWK.
AWK, cuyo nombre deriva de la primera letra de los apellidos de sus autores Alfred Aho, Peter Weinberger y Brian Kernighan, es
un lenguaje de programacin que fue diseado con el objetivo de procesar datos basados sobre texto y una de las primeras
herramientas en aparecer en Unix. Utiliza listas en un ndice ordenado por cadenas clave (listas asociativas) y expresiones
regulares. Es un lenguaje ampliamente utilizado para la programacin de guiones ejecutables pues aade funcionalidad a las
tuberas en los sistemas operativos tipo POSIX. Est incluido en las instalaciones bsicas de prcticamente todas las
distribuciones de GNU/Linux.

Estructura de los programas escritos en AWK.


El mandato awk utiliza un archivo o emisin de ordenes y un archivo o emisin de entrada. El primero indica como procesar al
segundo. El archivo de entrada es por lo general texto con algn formato que puede ser un archivo o bien la salida de otro
mandato.
La sintaxis general utilizada para el mandato awk utiliza el siguiente patrn:
awk 'expresin-regular { orden }'
Cuando se utiliza el mandato awk, ste examina el archivo de entrada y ejecuta la orden cuando encuentra la expresin regular
especificada.
El siguiente modelo ejecutara la orden al inicio del programa y antes de que sean procesados los datos del archivo de entrada:
awk 'BEGIN { orden }'
El siguiente modelo ejecutara la orden al final del programa y despus de que sean procesados los datos del archivo de entrada:
awk 'END { orden }'
El siguiente modelo ejecutara la orden por cada una de las lneas del archivo de entrada:
awk '{ orden }'

18-06-2013 20:49

Introduccin a AWK

2 de 5

http://www.alcancelibre.org/staticpages/index.php/introduccion-awk

Procedimientos.
A continuacin se mostrarn ejemplos del uso de AWK.
El siguiente mandato especfica 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

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 aaden 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\tDato12\n" >> ejemplo.txt
Y se visualiza con el mandato cat:
cat ejemplo.txt
Devolver el siguiente contenido:
Columna1
Dato1
Dato2
Dato5
Dato6
Dato9
Dato10

Columna2
Dato3
Dato4
Dato7
Dato8
Dato11 Dato12

Columna3

Columna4

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 lnea cuya columna contenga la expresin regular
Dato5:
awk '/Dato5/ { print }' ejemplo.txt
La salida devolver lo siguiente:
Dato5

Dato6

Dato7

Dato8

Si se utiliza el mandato awk del siguiente modo para que solo muestre solo la lnea cuya columna contenga la expresin regular

18-06-2013 20:49

Introduccin a AWK

3 de 5

http://www.alcancelibre.org/staticpages/index.php/introduccion-awk

Dato5 y adems 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 lneas con ms de 35 caracteres en el archivo
/etc/crontab:
awk 'length > 35' /etc/crontab
La salida devolver algo similar a lo siguiente:
#
#
#
#

|
|
|
*

|
|
|
*

.---------- day of month (1 - 31)


| .------- month (1 - 12) OR jan,feb,mar,apr ...
| | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
* * * user-name command to be executed

Si se utiliza el mandato awk del siguiente modo para que muestre solo las lneas con menos de 35 caracteres en el archivo
/etc/crontab:
awk 'length < 35' /etc/crontab
La salida devolver algo similar a lo siguiente:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# | .------------- hour (0 - 23)
# | | | | |
Utilice el mandato vi para crear el archivo usuario.txt:
vi usuario.txt
Aada el siguiente contenido:
Fulano Algo
Calle Mengana 123
Colonia Perengana
Ciudad de Zutano, C.P. 123456
Para que el mandato awk reconozca cada lnea 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 lnea vaca. 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 lnea) 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 lneas, palabras y caracteres. El siguiente mandato se establece que el valor de w sea
igual al nmero de campos (New Field o NF), c sea igual la longitud de cada campo y que se imprima el nmero 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 archivo numeros.txt con el siguiente contenido, donde las columnas sern separadas por un tabulador:
1 2 3 4
5 6 7 8
9 10 11 12

18-06-2013 20:49

Introduccin a AWK

4 de 5

http://www.alcancelibre.org/staticpages/index.php/introduccion-awk

el mandato awk puede realizar operaciones matemticas. El siguiente mandato establece que la variable 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 (que corresponde al 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 (que corresponde al 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 lnea) sea igual
a expresiones regulares que van desde la letra a hasta la letra z y desde la letra A hasta la letra Z, se establece que el valor de la
variable i es igual a 1 y menor al nmero 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 algo similar a lo siguiente:
15
job 1
to 1
usr 2
root 1
shell 1
mon 1
hour 1
bin 3
executed 1
name 1
wed 1
fri 1
details 1
of 3
feb 1
week 1
sun 1
path 1
crontabs 1
or 3
be 1
apr 1
definition 1
month 2
sbin 2
tue 1
jan 1
day 2
command 1
for 1
sunday 1
man 1
mar 1
user 1
minute 1
example 1
see 1
bash 1
sat 1
mailto 1
thu 1
ltima Edicin 15/06/2013, 12:14 | 35,436 Accesos

Noticias Recientes

Comentarios Recientes

Enlaces Recientes

Nuevo documento: Gestin de...

Conoce nuestra pgina en ...

* OpenERP

Nuevo documento: Instalaci...

> [+3]

* Adempiere

Conoce nuestra pgina en Fa...

Geeklog

Promocin Curso Global para...

Comunidad de Software Libre

Red Hat anuncia nuevo servi...

Dezoft.com Soluciones TI

Curso de Certificacin Java...

> [+2]

El Rincn de Tux

La informacin en Internet...

>> [+188]

Bitcora Personal de .::K...

18-06-2013 20:49

Introduccin a AWK

5 de 5

Red Hat presenta Wildfly, e...

http://www.alcancelibre.org/staticpages/index.php/introduccion-awk

Gomezbjesus. Desarrollo, ...

Derechos de autor 2013 Alcance Libre


Todas las marcas y logotipos mencionados en este sitio de Internet son propiedad de sus respectivos dueos..
1999-2011 Joel Barrios Dueas. Salvo que se indique lo contrario, todo el contenido est disponible bajo los trminos de la
licencia Creative Commons Reconocimiento 2.5.
Visite nuestro Directorio de noticias y Delti.com.mx.

18-06-2013 20:49

También podría gustarte