Foro de soporte
TemasAlcance Libre (65/0)
Alcance Libre Desktop (231/0)
Anuncios (141/0)
Comunidad (54/0)
Consejos y trucos (90/0)
Editoriales (18/0)
Entretenimiento (80/0)
Equipamiento lógico (Software) (187/0)
Humor (36/0)
Internet (128/0)
Juegos (56/0)
Manuales y documentos (90/0)
Música (13/0)
Negocios y empresas (110/0)
Noticias Generales (707/0)
Nuestro idioma (7/0)
Opiniones (79/0)
Programación y desarrollo (35/0)
Seguridad (93/0)
Sustento Físico (Hardware) (37/0)
Tiras cómicas (15/0)
Ubunteando (25/0)
EventosNo hay eventos próximosParticipan...Noticiasjoelbarrios (1478) bartoloco (119) capotes (87) Koalasoft (80) bakara (59) The One (46) Flaquita (44) domingov (43) gomezbjesus (38) aLb3rT (31) adrianpazr (21) ValeriaBueno (18) yucleto (16) linuxfrog (14) Zilus (14) Comentarios joelbarrios (215) Koalasoft (153) aLb3rT (126) gomezbjesus (79) The One (61) Oscar Hernández (47) juanroberto (38) Jose de Jesus (37) Micaelo (34) bakara (34) manowar (33) bartoloco (28) julioe (28) rlameda (27) scs_calleros (25) |
Introducción a AWKAutor: Joel Barrios DueñasCorreo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: darkshram@jabber.org Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
Introducción.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 programación que fue diseñado 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 programación de guiones ejecutables pues añade funcionalidad a las tuberías en los sistemas operativos tipo POSIX. Está incluido en las instalaciones básicas de prácticamente todas las distribuciones de GNU/Linux. Estructura de los programas escritos en AWK.El mandato awk utiliza un fichero o emisión de ordenes y un fichero o emisión de entrada. El primero indica como procesar al segundo. El fichero de entrada es por lo general texto con algún formato que puede ser un fichero o bien la salida de otro mandato. La sintaxis general utilizada para el mandato awk sigue el siguiente patrón: awk 'expresión-regular { orden }' Cuando se utiliza el mandato awk, éste examina el fichero de entrada y ejecuta la orden cuando encuentra la expresión regular especificada. El siguiente modelo ejecutaría la orden al inicio del programa y antes de que sean procesados los datos del fichero de entrada:
El siguiente modelo ejecutaría la orden al final del programa y después de que sean procesados los datos del fichero de entrada:
El siguiente modelo ejecutaría la orden por cada una de las líneas del fichero de entrada:
Procedimientos.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.
Lo anterior deberá devolver una salida como la siguiente:
Si se genera el fichero prueba.txt del siguiente modo:
Y se visualiza con el mandato cat:
Devolverá el siguiente contenido:
Si se utiliza el mandato awk para que solo muestre la columna 1 y la columna 3 del siguiente modo:
La salida devolverá lo siguiente:
Si se utiliza el mandato awk para que solo muestre la columna 3 y la columna 1, en ese orden, del siguiente modo:
La salida devolverá lo siguiente:
Si se añaden datos al fichero ejemplo.txt del siguiente modo:
Y se visualiza con el mandato cat:
Devolverá el siguiente contenido:
Si se utiliza nuevamente el mandato awk para que solo muestre la columna 1 y la columna 3 del siguiente modo:
La salida devolverá lo siguiente:
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:
La salida devolverá lo siguiente:
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:
La salida devolverá lo siguiente:
Si se utiliza el mandato awk del siguiente modo para que muestre solo las líneas con más de 35 caracteres en el fichero /etc/crontab:
La salida devolverá lo siguiente:
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:
La salida devolverá lo siguiente:
Utiliza vi para crear el fichero usuario.txt:
Ingrese el siguiente contenido:
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:
La salida devolverá lo siguiente:
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:
La salida devolverá lo siguiente:
Genere el fichero numeros.txt con el siguiente contenido, donde las columnas serán separadas por un tabulador:
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:
La salida devolverá lo siguiente (resultado de la suma de 1+5+9):
Si se hace lo mismo, pero con los valores de la columna 2:
La salida devolverá lo siguiente (resultado de la suma de 2+6+10):
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.
La salida devolverá lo siguiente:
|
Comentarios Recientes