|
|
· Junio y Julio, Curso Global de Servidores con CentOS 6.
· Taller de programación de Python. · Curso de programación de PHP. · Prueba ALDOS 1.4.4. Nuestro sistema operativo para escritorio. Introducción a AWK
Autor: Joel Barrios Dueñas
Correo 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 archivo o emisión de ordenes y un archivo o emisión de entrada. El primero indica como procesar al segundo. El archivo de entrada es por lo general texto con algún formato que puede ser un archivo o bien la salida de otro mandato. La sintaxis general utilizada para el mandato awk utiliza el siguiente patrón:
Cuando se utiliza el mandato awk, éste examina el archivo 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 archivo de entrada:
El siguiente modelo ejecutaría la orden al final del programa y después de que sean procesados los datos del archivo de entrada:
El siguiente modelo ejecutaría la orden por cada una de las líneas del archivo 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 archivo 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 archivo 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 archivo /etc/crontab:
La salida devolverá algo similar a 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 archivo /etc/crontab:
La salida devolverá algo similar a lo siguiente:
Utilice el mandato vi para crear el archivo usuario.txt:
Añada 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 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 archivo 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 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:
La salida devolverá lo siguiente (que corresponde al 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 (que corresponde al 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 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 número de campos.
La salida devolverá algo similar a lo siguiente:
|
Comentarios Recientes