Cómo usar Regex con el comando 'AWK'

Cómo usar Regex con el comando 'AWK'

Se utiliza una expresión regular (regex) para encontrar una secuencia dada de caracteres dentro de un archivo. Se pueden usar símbolos como letras, dígitos y caracteres especiales para definir el patrón. Varias tareas se pueden completar fácilmente utilizando patrones regex. En este tutorial, le mostraremos cómo usar patrones regex con el comando 'AWK'.

Los caracteres básicos utilizados en patrones

Se pueden usar muchos caracteres para definir un patrón regex. Los caracteres más comúnmente utilizados para definir patrones regex se definen a continuación.

Personaje Descripción
. Haga coincidir cualquier personaje sin una nueva línea (\ n)
\ Cita un nuevo metaracter
^ Coincidir con el comienzo de una línea
ps Coincidir con el final de una línea
| Definir un alternativo
() Defina un grupo
[] Definir una clase de personaje
\ W Coincidir con cualquier palabra
\s Coincidir con cualquier personaje de espacio en blanco
\d Coincidir con cualquier dígito
\b Coincidir con cualquier límite de palabras

Crear un archivo

Para seguir junto con este tutorial, cree un archivo de texto llamado productos.TXT. El archivo debe contener cuatro campos: ID, nombre, tipo y precio.

Nombre de identificación Tipo de precio

P1001 15 "Monitor de monitor $ 100

P1002 A4Tech Mouse Mouse $ 10

Impresora de impresora Samsung P1003 $ 50

escáner de escáner P1004 HP $ 60

P1005 Logitech Mouse Mouse $ 15

Ejemplo 1: Defina un patrón regex usando la clase de caracteres

El siguiente comando 'AWK' buscará e imprimirá líneas que contengan el carácter 'n' seguido de los caracteres 'er'.

$ Cat Products.TXT
$ awk '/ [n] [er]/ imprimir $ 0' productos.TXT

La siguiente salida se producirá después de ejecutar los comandos anteriores. La salida muestra la línea que coincide con el patrón. Aquí, solo una línea coincide con el patrón.

Ejemplo 2: Defina un patrón regex usando el símbolo '^'

El siguiente comando 'AWK' buscará e imprimirá líneas que comiencen con el personaje 'P' e incluya el número 3.

$ Cat Products.TXT
$ awk '/^p.*3/ imprimir $ 0 'productos.TXT

La siguiente salida se producirá después de ejecutar los comandos anteriores. Aquí, hay una línea que coincide con el patrón.

Ejemplo 3: Defina un patrón regex usando la función gsub

El gsub () la función se usa para buscar y reemplazar el texto globalmente. El siguiente comando 'AWK' buscará la palabra 'escáner' y la reemplazará con la palabra 'enrutador' antes de imprimir el resultado.

$ Cat Products.TXT
$ AWK 'GSUB (/ESCANDER/, "ROUNTER")' Productos.TXT

La siguiente salida se producirá después de ejecutar los comandos anteriores. Hay una línea que contiene la palabra 'Escáner', y 'Escáner'se reemplaza por la palabra'Enrutador'Antes de que se imprima la línea.

Ejemplo 4: Defina un patrón regex con '*'

El siguiente comando 'AWK' buscará e imprimirá cualquier cadena que comience con 'Mo' e incluya cualquier carácter posterior.

$ Cat Products.TXT
$ awk '/ mo*/ imprimir $ 0' productos.TXT

La siguiente salida se producirá después de ejecutar los comandos anteriores. Tres líneas coinciden con el patrón: dos líneas contienen la palabra 'Ratón'Y una línea contiene la palabra'Monitor'.

Ejemplo 5: Defina un patrón regex usando el símbolo '$'

El siguiente comando 'AWK' buscará e imprimirá líneas en el archivo que terminan con el número 5.

$ Cat Products.TXT
$ awk '/ 5 $/ imprimir $ 0' Productos.TXT

La siguiente salida se producirá después de ejecutar los comandos anteriores. Solo hay una línea en el archivo que termina con el número 5.

Ejemplo 6: Defina un patrón regex usando '^' y '|' símbolo

El '^'El símbolo indica el comienzo de una línea y el'|'El símbolo indica una declaración lógica o. El siguiente comando 'AWK' buscará e imprimirá líneas que comiencen con el personaje 'pag'y contener a tampoco'Escáner' o 'Ratón'.

$ Cat Products.TXT
$ awk '/^p.* (Escáner | mouse)/'productos.TXT

La siguiente salida se producirá después de ejecutar los comandos anteriores. La salida muestra que dos líneas contienen la palabra 'Ratón'Y una línea contiene la palabra'Escáner'. Las tres líneas comienzan con el personaje 'pag'.

Ejemplo 7: Defina un patrón regex usando el símbolo '+'

El '+'El operador se usa para encontrar al menos una coincidencia. El siguiente comando 'AWK' buscará e imprimirá líneas que contengan el carácter 'norte' al menos una vez.

$ Cat Products.TXT
$ awk '/n+/print' productos.TXT

La siguiente salida se producirá después de ejecutar los comandos anteriores. Aquí, el personaje 'norte'Contiene ocurre al menos una vez en las líneas que contienen las palabras Monitor, impresora y escáner.

Ejemplo 8: Defina un patrón regex usando la función gsub ()

El siguiente comando 'AWK' buscará globalmente la palabra 'Impresora'y reemplácelo con la palabra'Monitor' utilizando el función gsub ().

$ Cat Products.TXT
$ AWK 'GSUB (/Printer/, "Monitor") Imprimir $ 0' Productos.TXT

La siguiente salida se producirá después de ejecutar los comandos anteriores. La cuarta línea del archivo contiene la palabra 'Impresora'Dos veces, y en la salida', 'Impresora'ha sido reemplazado por la palabra'Monitor'.

Conclusión

Se pueden usar muchos símbolos y funciones para definir patrones de regex para diferentes tareas de búsqueda y reemplazo. Algunos símbolos comúnmente utilizados en patrones regex se aplican en este tutorial con el comando 'AWK'.