Cómo usar AWK y expresiones regulares para filtrar texto o cadena en archivos

Cómo usar AWK y expresiones regulares para filtrar texto o cadena en archivos

Cuando ejecutamos ciertos comandos en Unix/Linux para leer o editar texto desde una cadena o archivo, la mayoría de las veces intentamos filtrar la salida a una sección de interés dada. Aquí es donde el uso de expresiones regulares es útil.

Leer también: 10 operadores útiles de encadenamiento de Linux con ejemplos prácticos

¿Qué son las expresiones regulares??

Una expresión regular puede definirse como una cadena que representan varias secuencias de caracteres. Una de las cosas más importantes de las expresiones regulares es que le permiten filtrar la salida de un comando o archivo, editar una sección de un texto o archivo de configuración, etc.

Características de la expresión regular

Las expresiones regulares están hechas de:

  1. Personajes ordinarios como espacio, bajo (_), A-Z, A-Z, 0-9.
  2. Meta caracteres que se expanden a los personajes ordinarios, incluyen:
    1. (.) coincide con cualquier personaje, excepto una nueva línea.
    2. (*) coincide con cero o más existencias del carácter inmediato que lo precede.
    3. [ caracteres) ] coincide con cualquiera de los caracteres especificados en los personajes, uno también puede usar un guión (-) significar una variedad de personajes como [A-F], [1-5], etcétera.
    4. ^ coincide con el comienzo de una línea en un archivo.
    5. ps coincide con el final de la línea en un archivo.
    6. \ Es un personaje de escape.

Para filtrar el texto, uno debe usar una herramienta de filtrado de texto como asombrar. Tu puedes pensar en asombrar como lenguaje de programación propio. Pero para el alcance de esta guía para usar asombrar, Lo cubriremos como una simple herramienta de filtrado de línea de comandos.

La sintaxis general de AWK es:

# Awk 'script' nombre de archivo 

Dónde 'guion' es un conjunto de comandos que se entienden por asombrar y se ejecutan en el archivo, nombre de archivo.

Funciona leyendo una línea dada en el archivo, hace una copia de la línea y luego ejecuta el script en la línea. Esto se repite en todas las líneas en el archivo.

El 'guion' está en la forma '/ patrón/ acción' dónde patrón es una expresión regular y el acción es lo que AWK hará cuando encuentre el patrón dado en una línea.

Cómo usar la herramienta de filtrado AWK en Linux

En los siguientes ejemplos, nos centraremos en los meta caracteres que discutimos anteriormente bajo las características de AWK.

Un ejemplo simple de usar AWK:

El ejemplo a continuación imprime todas las líneas en el archivo /etc/huéspedes Dado que no se da ningún patrón.

# Awk '//imprimir '/etc/hosts 
AWK imprime todas las líneas en un archivo

Use AWK con patrón:

I El ejemplo a continuación, un patrón hostil se ha dado, por lo que Awk coincidirá con la línea de la línea hostil en el /etc/huéspedes archivo.

# Awk '/localhost/imprimir ' /etc /hosts 
AWK Impresión dada una línea de coincidencia en un archivo

Usando AWK con (.) comodín en un patrón

El (.) coincidirá con cadenas que contienen loc, hostil, billete local En el ejemplo a continuación.

Es decir * L Some_Single_Character c *.

# Awk '/L.C/imprimir ' /etc /hosts 
Use AWK para imprimir cadenas coincidentes en un archivo

Usar AWK con (*) carácter en un patrón

Coincidirá con cadenas que contienen hostil, billete local, líneas, capaz, Como en el ejemplo a continuación:

# Awk '/l*c/imprimir ' /etc /localhost 
Use AWK para que coincida con las cadenas en el archivo

También te darás cuenta de que (*) intenta obtener la coincidencia más larga posible que pueda detectar.

Vamos a ver un caso que demuestre esto, tome la expresión regular t*t lo que significa cadenas de partidos que comienzan con la letra T y terminar con T En la línea de abajo:

Este es Tecmint, donde obtienes los mejores buenos tutoriales, cómo, guías, tecmint. 

Obtendrá las siguientes posibilidades cuando use el patrón /t*t/:

Esto es t Esta es una tecmint, esta es Tecmint, donde obtienes t Esta es TecMint, donde obtienes lo mejor bueno, esto es Tecmint, donde obtienes los mejores tutoriales buenos, cómo esta es Tecmint, donde obtienes los mejores tutoriales buenos , Cómo tos, guías, t Esta es Tecmint, donde obtienes los mejores tutoriales buenos, cómo tos, guías, tecmint 

Y (*) en /t*t/ El personaje de Wild Card permite a AWK elegir la última opción:

Este es Tecmint, donde obtienes los mejores buenos tutoriales, cómo, guías, tecmint 

Usando AWK con set [carácter (s)]]

Tomemos, por ejemplo, el conjunto [AL1], Aquí Awk coincidirá con todas las cuerdas que contengan el personaje a o l o 1 en una línea en el archivo /etc/huéspedes.

# Awk '/[AL1]/imprimir ' /etc /hosts 
Use-Awk para imprimir el personaje coincidente en el archivo

El siguiente ejemplo coincide con las cadenas que comienzan con K o k seguido por T:

# Awk '/[Kk] t/imprimir ' /etc /hosts 
Use AWK para imprimir una cadena coincidente en el archivo

Especificando personajes en un rango

Comprender personajes con AWK:

  1. [0-9] significa un solo número
  2. [Arizona] significa coincidir con una sola carta de minúsculas
  3. [ARIZONA] significa coincidir con una sola carta de mayúsculas
  4. [A-Za-Z] significa coincidir con una sola letra
  5. [A-ZA-Z 0-9] significa coincidir con una sola letra o número

Veamos un ejemplo a continuación:

# Awk '/[0-9]/imprimir ' /etc /hosts 
Use AWK para imprimir números coincidentes en el archivo

Toda la línea desde el archivo /etc/huéspedes contener al menos un solo número [0-9] En el ejemplo anterior.

Use Awk con (^) meta carácter

Coincide con todas las líneas que comienzan con el patrón proporcionado como en el ejemplo a continuación:

# Awk '/^Fe/print ' /etc /hosts # AWK'/^ff/imprimir ' /etc /hosts 
Use AWK para imprimir todas las líneas coincidentes con patrón

Use AWK con ($) meta de carácter

Coincide con todas las líneas que terminan con el patrón proporcionado:

# Awk '/AB $/print ' /etc /hosts # AWK'/OST $/print ' /etc /hosts # AWK'/Rs $/imprimir ' /etc /hosts 
Use AWK para imprimir cadena de patrones dada

Usa AWK con (\) carácter de escape

Le permite tomar el personaje siguiéndolo como un literal, es decir, considerarlo tal como es.

En el ejemplo a continuación, el primer comando imprime toda la línea en el archivo, el segundo comando no imprime nada porque quiero hacer coincidir una línea que tiene $ 25.00, Pero no se usa ningún personaje de escape.

El tercer comando es correcto ya que un personaje de escape se ha utilizado para leer ps como están las cosas.

# Awk '//imprimir 'ofertas.txt # awk '/$ 25.00/imprimir 'ofertas.txt # awk '/\ $ 25.00/imprimir 'ofertas.TXT 
Use Awk con personaje de escape

Resumen

Eso no es todo con el asombrar Herramienta de filtrado de línea de comandos, los ejemplos anteriores a las operaciones básicas de AWK. En las siguientes partes avanzaremos sobre cómo usar características complejas de AWK. Gracias por leer y por cualquier adición o aclaración, publique un comentario en la sección de comentarios.