Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como awk

split() en AWK

AWK contiene muchas funciones (aka build-in) que nos permiten manipular los string. La función split() es sumamente útil para la transformación de strings en arreglos. El string puede provenir de un archivo de texto, variable o resultado de cualquier substring. var =split(string,array_name,separator) Ejemplo #!/bin/awk {     my_string="Hola mundo cruel!"     ss = split(my_string,my_array," ")     for (my_str in my_array)           print my_str, my_array[my_str] } Salida en línea de comandos. 1 Hola 2 mundo 3 cruel!

Patrones en AWK

Una de las funciones más poderosas de AWK es la búsqueda de patrones en archivos de texto, como logs; posteriormente accionar sobre esas coincidencias nos abre posibilidades que no tendríamos en caso de hacerlo a golpe de teclazos. La estructura es muy sencilla:     awk '/expresion/ {acciones}' input Bien, ahora que conocemos la estructura elemental, hagamos un ejercicio rápido. awk script #!/usr/bin/awk /[0-9+]/ {print "Esta linea contiene digitos"} /^$/ {print "Esta linea esta en blanco"} /[a-zA-Z]+/ {print "Esta linea contiene caracteres"} Entrada AWK is a programming language designed for text processing and typically used as a data extraction and reporting tool. It is a standard feature of most Unix-like operating systems. The AWK language is a data-driven scripting language consisting of a set of actions to be taken against streams of textual data – either run directly on files or used as part of a pipeline – for purposes of...

Split en AWK

    Es una de las funciones que me han resultado mucho más útiles. Gracias a esta función, se pueden manipular subcampos en forma de arreglos sin más intervención del sysadmin. l = split(string, array, field separator) string -> Es cualquier string, como los campos ($1, etc). array -> NombEjemplore del arreglo en el cual se guardarán los datos. field separator -> Es el caracter de separación de caractéres. Éste puede ser, también, un regex. l -> El tamaño del arreglo. Ejemplo usuarios.txt rod,Rodrigo Ramos,sysadmin ram,Ramiro Pérez,developer dan,Daniela Solis,sales Script #!/bin/awk # Ejemplo de utilización de split. BEGIN {print "Ejemplo de utilizacion de split"}       { status = split($0,names,",")               for(elem in names)                     ...

Promedios con AWK

Como muchos de los ejemplos que voy ingresando, son las maneras en que utilizo las opciones de comandos y lenguajes. Siempre que se desea realizar estadísticas, mi lenguaje favorito para realizarlo es AWK, por su simpleza, velocidad y multiplicidad de funciones. Al vuelto podemos realizar operaciones, como sumas, multiplicaciones, restas y divisiones, entre otras muchas cosas.  Entrada john 6 23 2 1 1 cristina 9 2 3 1 12 l10nn 10 9 3 2 7 $ cat avg.txt | awk '{total = $2 + $3 + $4 + $5 + $6; avg = total/(NF-1); print $1, avg}

Introducción a grep

G/er/p Lo prometido es deuda. En el artículo anterior, hice la promesa que regresaría con más información para desempolvar los dedos. Esta vez hablaré un poco de cómo construir expresiones regulares (aka regex) para la extracción de información. Para lo siguiente, el consejo que le doy a los novatos es que consideren 4 cosas al momento de realizar la construcción de sus búsquedas y probarlas. Es importante asegurarse que los datos que están observando son realmente todos los que son y que éstos no se ven sesgados por datos de otra clase. Las premisas que en todos los casos deben ser ciertas son: Qué empata. Qué NO empata. Qué empata pero No debería empatar. Qué no empata, pero debería empatar. Insisto en la importancia de mantener la consistencia en los resultados. Si vamos a presentar un informe con fechas, números, promedios y picos; cualquier volumen de datos podría generar una desviación en la verosimilitud de toda la información, poniendo en riesgo las medidas ...

Intruducción a AWK

Estos días he andado muy activo con el reforzamiento de algunos temas, especialmente los que más me interesan. AWK y Sed han sido, por mucho tiempo, mis herramientas favoritas en la elaboración de estadísticas y reportes. No son especialistas en la presentación de la información (no grafican), pero con algo de imaginación, quedan bastante inteligibles las salidas. He estado revisando el libro de Sed & AWK de Ardnold Robbins y Dale Dougherty , cuyo contenido hasta ahora me ha parecido excelso. Su estructura y manera de explicar las posibilidades provienen de la experiencia, no de la teoría. Un punto muy bueno por los autores. Es ameno leerlos, los ejemplos se organizan por complejidad/utilidad, explicándolos poco a poco sin que caiga en un man del sistema y que al final la información esté en los terrenos de lo baladí. Recomiendo mucho su lectura, el aprendizaje de estas dos herramientas es vital si desean manejar y entender los registros del sistema y aplicaciones. Su poder ...

Formateando salida de SAR

SAR es la herramienta por excelencia para el monitoreo de los sistemas operativos GNU/Linux. Cuenta con históricos, además de una gran cantidad de métricas relacionadas al desempeño de nuestro servidor, como cpu, memoria, I/O y red. Cada uno de estos hitos puede ser diseccionado con mayor granularidad, es decir, observar la parte que compone cada recurso. Algunas veces es necesario realizar reportes de desempeño a otras áreas o incluso para efectos de conocimiento de patrones de utilización de cada servidor. Por desgracia, las formas de llevar a un modelo de visualización más amable es tarea un poco más complicada y no está incorporada por defecto con SAR. Existen herramientas ex profeso, sin embargo, tienen que ser utilizadas con cierta complejidad y algunas veces no producen el resultado deseado, como por ejemplo, gráficas de muy pobre visualización. En lo personal me gusta graficar las métricas; son una manera muy simple de entender lo que sucede y enfocarnos en los momento...

Análisis de conexiones TIME_WAIT

El tema de las conexiones mal utilizadas es un dolor de cabeza para muchos administradores de servidores de aplicaciones. Es común que las aplicaciones que mantenemos en nuestro resguardo sufran degradación, e incluso fallos, por el "simple" hecho de no cerrar las conexiones o tardar demasiado en hacerlo (vía sistema operativo). Como sabemos, una conexión pasa por varios estados, mismos que salen de la intención de este escrito. Las conexiones establecidas (ESTABLISHED) son demasiado costosas cuando abren y cierran, debido a eso, se han creado manejadores de conexiones (pooles) que mantienen abiertas las conexiones para reutilizarlas dependiendo la demanda. Es por eso, que en medida de lo posible, hay que utilizar un manejador de conexiones, ya sea a base de datos o algún broker. Entrando de lleno al tema, las conexiones en estado TIME_WAIT son un problema por el consumo de memoria, ocupando cada una 64k de memoria no paginable, es decir,  todo el tiempo se mantiene...