La oferta de Utilities Linux a menudo sigue la filosofía de diseño Unix. Cualquier herramienta debe ser pequeña, usar texto plano para E/S y operar de manera modular. Gracias al legado, tenemos algunas de las mejores funcionalidades de procesamiento de texto con la ayuda de herramientas como SED y AWK.
En Linux, la herramienta AWK viene preinstalada en todas las distribuciones de Linux. Awk en sí es un lenguaje de programación. La herramienta AWK es solo un intérprete del lenguaje de programación AWK. En esta guía, consulte cómo usar AWK en Linux.
Uso de AWK
La herramienta AWK es más útil cuando los textos se organizan en un formato predecible. Es bastante bueno para analizar y manipular datos tabulares. Funciona en línea por línea, en todo el archivo de texto.
El comportamiento predeterminado de AWK es usar espacios en blanco (espacios, pestañas, etc.) para separar campos. Afortunadamente, muchos de los archivos de configuración en Linux siguen este patrón.
Sintaxis básica
Así es como se ve la estructura de comando de AWK.
$ awk '// ; ; '
Las porciones del comando se explican por sí mismas. AWK puede operar sin la parte de búsqueda o acción. Si no se especifica nada, entonces la acción predeterminada en la coincidencia será solo imprimir. Básicamente, AWK imprimirá todas las coincidencias que se encuentran en el archivo.
Si no hay un patrón de búsqueda especificado, AWK realizará las acciones especificadas en cada línea del archivo.
Si se dan ambas porciones, entonces AWK usará el patrón para determinar si la línea actual lo refleja. Si se combina, entonces AWK realiza la acción especificada.
Tenga en cuenta que AWK también puede funcionar en textos redirigidos. Esto se puede lograr con el contenido del comando de awk para actuar sobre. Obtenga más información sobre el comando Linux Pipe.
Para fines de demostración, aquí hay un archivo de texto de muestra. Contiene 10 líneas, 2 palabras por línea.
Muestra de $ Cat.TXT
Expresión regular
Una de las características clave que hacen de AWK una herramienta poderosa es el soporte de la expresión regular (regex, para abreviar). Una expresión regular es una cadena que representa un cierto patrón de caracteres.
Aquí hay una lista de algunas de las sintaxis de expresión regular más comunes. Estas sintaxis regex no son solo exclusivas de AWK. Estas son sintaxis casi universal de regex, por lo que dominarlas también ayudará en otras aplicaciones/programación que implica una expresión regular.
Impresión del texto
Para imprimir todo el contenido de un archivo de texto, use el comando de impresión. En el caso del patrón de búsqueda, no hay un patrón definido. Entonces, AWK imprime todas las líneas.
Muestra de $ awk 'print'.TXT
Aquí, "Imprimir" es un comando AWK que imprime el contenido de la entrada.
Búsqueda de cadenas
AWK puede realizar una búsqueda básica de texto en el texto dado. En la sección del patrón, tiene que ser el texto para encontrar.
En el siguiente comando, AWK buscará el texto "rápido" en todas las líneas de la muestra de archivo.TXT.
Muestra de $ AWK '/Quick/'.TXT
Ahora, usemos algunas expresiones regulares para ajustar aún más la búsqueda. El siguiente comando imprimirá todas las líneas que tienen "marrón" al principio.
$ awk '/^Brown/' muestra.TXT
¿Qué tal encontrar algo al final de una línea?? El siguiente comando imprimirá todas las líneas que tengan "rápidos" al final.
Muestra de $ AWK '/Quick $/'.TXT
Patrón de comodín
El siguiente ejemplo será mostrar el uso del careto (.). Aquí, puede haber dos personajes antes del personaje "E".
$ awk '/... e/' muestra.TXT
Patrón de comodín (usando asterisco)
¿Qué pasa si puede haber cualquier cantidad de caracteres en la ubicación?? Para que coincida con cualquier personaje posible en la posición, use el asterisco (*). Aquí, Awk coincidirá con todas las líneas que tienen cualquier cantidad de caracteres después de "The".
$ awk '/la muestra*/'.TXT
Expresión de soporte
El siguiente ejemplo será mostrar cómo usar la expresión del soporte. La expresión del soporte dice que en la ubicación, la coincidencia será válida si coincide con el conjunto de caracteres encerrados por los soportes. Por ejemplo, el siguiente comando coincidirá con "el" y "tee" como coincidencias válidas.
$ awk '/t [él] e/' muestra.TXT
Hay algunos conjuntos de caracteres predefinidos en la expresión regular. Por ejemplo, el conjunto de todas las letras mayúsculas se etiqueta como "A-Z". En el siguiente comando, AWK coincidirá con todas las palabras que contienen una letra mayúscula.
$ awk '/[a-z]/' muestra.TXT
Eche un vistazo al siguiente uso de conjuntos de caracteres con expresión de soporte.
AWK Variables predefinidas
AWK viene con un montón de variables predefinidas y automáticas. Estas variables pueden facilitar los programas de escritura y los scripts con AWK.
Estas son algunas de las variables AWK más comunes que encontrarás.
Vamos a verlos en acción. El siguiente comando utilizará la variable NR para imprimir la línea 2 a la línea 4 desde la muestra.TXT. AWK también admite operadores lógicos como Logical y (&&).
$ awk 'nr> 1 && nr < 5' sample.txt
Para asignar un valor específico a una variable AWK, use la siguiente estructura.
$ awk '// ; ; '= ,
Por ejemplo, para eliminar todas las líneas en blanco del archivo de entrada, cambie el valor de RS a básicamente nada. Es un truco que usa una regla de Posix oscura. Especifica que si el valor de RS es una cadena vacía, los registros están separados por una secuencia que consiste en una nueva línea con una o más líneas en blanco. En Posix, una línea en blanco sin contenido está completamente vacía. Sin embargo, si la línea contiene espacios en blanco, entonces no se considera "en blanco".
Muestra de $ awk 'print' rs = ".TXT
Recursos adicionales
AWK es una herramienta poderosa con toneladas de características. Si bien esta guía cubre muchos de ellos, todavía son solo lo básico. Dominar Awk tomará más que esto. Esta guía debe ser una buena introducción a la herramienta.
Si realmente desea dominar la herramienta, aquí hay algunos recursos adicionales que debe consultar.
Internet es un buen lugar para aprender algo. Hay muchos tutoriales increíbles sobre los conceptos básicos de AWK para usuarios muy avanzados.
Pensamiento final
Con suerte, esta guía ayudó a proporcionar una buena comprensión de los conceptos básicos de AWK. Si bien puede llevar un tiempo, dominar AWK es extremadamente gratificante en términos del poder que otorga.
Computación feliz!