In Linux Última actualizaciónated:
Comparte en:
Software de Jira es la herramienta de gestión de proyectos número uno utilizada por equipos ágiles para planificar, rastrear, lanzar y respaldar software excelente.

Si ha estado usando Linux por un tiempo, ya conoce grep (Global Regular Expression Print), una herramienta de impresión de texto.processHerramienta de búsqueda que puede utilizar para buscar archivos y directorios. Es muy útil en manos de un usuario avanzado de Linux. Sin embargo, usarlo sin expresiones regulares puede limitar sus capacidades.

Pero, ¿qué es Regex? 

Regex son expresiones regulares que puede usar para mejorar la funcionalidad de búsqueda de grep. Regex, por definición, es un patrón de filtrado de salida avanzado. Con la práctica, puede usar expresiones regulares de manera efectiva, ya que también puede usarlas con otros comandos de Linux.

En nuestro tutorial, aprenderemos cómo usar Grep y Regex de manera efectiva.

Requisito previo

El uso de grep con expresiones regulares requiere un buen conocimiento de Linux. Si eres un principiante, echa un vistazo a nuestro guías de linux.

También necesita acceso a una computadora portátil o computadora que ejecute el sistema operativo Linux. Puedes usar cualquier Distribución de Linux de su elección. Y, si tienes un Windows máquina, aún puedes usar Linux con WSL2. Echa un vistazo a nuestra versión detallada al respecto. Haga clic aquí para entrar.

El acceso a la línea de comando/terminal le permite ejecutar todos los comandos proporcionados en nuestro tutorial de grep/regex.

Además, también necesita acceso a los archivos de texto que necesitará para ejecutar los ejemplos. Usé ChatGPT para generarate una pared de texto, diciéndole que escriba sobre tecnología. El mensaje que utilicé es el siguiente.

“Generoate 400 palabras sobre tecnología. Debería incluir la mayor parte de la tecnología. Además, asegúrese de repetir los nombres de las tecnologías en todo el texto”.

Una vez que genereateDespués de editar el texto, lo copié, lo pegué y lo guardé en el archivo tech.txt, que usaremos a lo largo del tutorial.

Por último, una comprensión básicaandiLa ejecución del comando grep es imprescindible. Puedes consultar 16 ejemplos de comandos grep para refrescar tus conocimientos. También presentaremos brevemente el comando grep para que pueda comenzar.

Sintaxis y ejemplos del comando grep

La grep La sintaxis del comando es simple.

$ grep -options [regex/pattern] [files]

Como puede notar, espera un patrón y la lista de archivos que desea ejecutar el comando.

Hay muchas opciones de grep disponibles que modifican su funcionalidad. Éstas incluyen:

  • - i: ignorar casos
  • -r: hacer búsqueda recursiva
  • -w: realizar una búsqueda para encontrar solo palabras completas
  • -v: mostrar todas las líneas que no coinciden
  • -norte: mostrar todos los números de línea coincidentes
  • -l: imprimir los nombres de los archivos 
  • -color: salida de resultados en color
  • -C: muestra el recuento de coincidencias para el patrón utilizado

#1. Buscar una palabra completa

Deberá usar el argumento -w con grep para una búsqueda de palabra completa. Al usarlo, omite cualquier cadena que coincida con el patrón dado.

$ grep -w ‘tech\|5G’ tech.txt

Como puede ver, el comando da como resultado una salida en la que busca dos palabras, "5G" y "tecnología", en todo el texto. Luego los marca con color rojo.

Aquí, el | el símbolo de tubería tiene escape para que grep no lo haga process como un metacarácter.

Para hacer una búsqueda que no distinga entre mayúsculas y minúsculas, use grep con el -i argumento.

$ grep -i ‘tech’ tech.txt

El comando busca cualquier instancia de la cadena "tech" que no distinga entre mayúsculas y minúsculas, ya sea una palabra completa o parte de ella.

Para mostrar todas las líneas que no contienen un patrón determinado, deberá utilizar el -v argumento.

$ grep -v ‘tech’ tech.txt

La salida muestra todas las líneas que no contienen la palabra "tecnología.” También verá líneas vacías también. Estas líneas son las líneas que están después de un párrafo. 

Para realizar una búsqueda recursiva, utilice el  -r argumento con grep.

$ grep -R ‘error\|warning’ /var/log/*.log
#output

/var/log/bootstrap.log:2023-01-03 21:40:18 URL:http://ftpmaster.internal/ubuntu/pool/main/libg/libgpg-error/libgpg-erro 0_1.43-3_amd64.deb [69684/69684] -> "/build/chroot//var/cache/apt/archives/partial/libgpg-error0_1.43-3_amd64.deb" [1]

/var/log/bootstrap.log:dpkg: warning: parsing file '/var/lib/dpkg/status' near line 5 package 'dpkg':

/var/log/bootstrap.log:dpkg: warning: parsing file '/var/lib/dpkg/status' near line 5 package 'dpkg':

/var/log/bootstrap.log:dpkg: warning: parsing file '/var/lib/dpkg/status' near line 24 package 'dpkg':

/var/log/bootstrap.log:dpkg: warning: parsing file '/var/lib/dpkg/status' near line 24 package 'dpkg':

/var/log/bootstrap.log:dpkg: warning: ignoring pre-dependency problem!

El comando grep busca recursivamente dos palabras, "error" y "advertencia", en el directorio /var/log. Este es un comando útil para obtener información sobre cualquier advertencia y error en los archivos de registro.

Grep y Regex: qué es y ejemplos

Como estamos trabajando con expresiones regulares, debe saber que las expresiones regulares ofrecen tres opciones de sintaxis. Éstas incluyen:

  • Expresiones regulares básicas (BRE)
  • Expresiones regulares extendidas (ERE)
  • Expresiones regulares compatibles con Pearl (PCRE)

El comando grep usa BRE como la opción predeterminada. Por lo tanto, si desea utilizar otros modos de expresión regular, deberá mencionarlos. El comando grep también trata los metacaracteres como son. Por lo tanto, si usa metacaracteres como ?, +, ), deberá escapar de ellos con el comando de barra invertida (\).

La sintaxis de grep con expresiones regulares es la siguiente.

$ grep [regex] [filenames]

Veamos grep y regex en acción con los siguientes ejemplos.

#1. Coincidencias de palabras literales

Para hacer una coincidencia de palabra literal, deberá proporcionar una cadena como expresión regular. Después de todo, una palabra también es una expresión regular.

$ grep "technologies" tech.txt

De manera similar, también puede usar coincidencias literales para encontrar usuarios actuales. Para ello, corre,

$ grep bash /etc/passwd
#output

root:x:0:0:root:/root:/bin/bash

nitt:x:1000:1000:,,,:/home/nitt:/bin/bash

Esto muestra los usuarios que pueden acceder al bash.

#2. Coincidencia de anclas

La coincidencia de anclas es una técnica útil para búsquedas avanzadas que utilizan caracteres especiales. En expresiones regulares, hay diferentes caracteres de anclaje que puede usar para representar posiciones específicas dentro de un texto. Éstas incluyen:

  • "^' símbolo de intercalación: El símbolo de intercalación coincide con el inicio de la cadena o línea de entrada y busca una cadena vacía.
  • "símbolo de dólar $': El símbolo del dólar coincide con el final de la cadena o línea de entrada y busca una cadena vacía.

Los otros dos caracteres de coincidencia de anclaje incluyen el límite de palabra '\ b' y el límite de no palabra '\ B'. 

  • Límite de palabra '\ b': Con \b, puede afirmar la posición entre una palabra y un carácter que no es una palabra. En palabras simples, te permite hacer coincidir palabras completas. De esta manera, puede evitar coincidencias parciales. También puede usarlo para reemplazar palabras o contar las apariciones de palabras en una cadena.
  • \B límite sin palabra: Es lo opuesto a \b word border en expresiones regulares, ya que afirma una posición que no está entre dos palabras o caracteres que no son palabras.

Veamos ejemplos para tener una idea clara.

$ grep ‘^From’ tech.txt

El uso de intercalación requiere ingresar la palabra o el patrón en el caso correcto. Eso es porque distingue entre mayúsculas y minúsculas. Entonces, si ejecuta el siguiente comando, no devolverá nada.

$ grep ‘^from’ tech.txt

De manera similar, puede usar el símbolo $ para encontrar la oración que coincida con un patrón, cadena o palabra dados.

$ grep ‘technology.$' tech.txt

También puede combinar los símbolos ^ y $. Veamos el ejemplo a continuación.

$ grep “^From \| technology.$” tech.txt

Como puede ver, la salida contiene oraciones que comienzan con "De" y oraciones que terminan con "tecnología".

#3. Agrupamiento

Si desea buscar varios patrones a la vez, deberá utilizar Agrupación. Te ayuda a crearate pequeños grupos de personajes y patrones que puedes tratar como una sola unidad. Por ejemplo, puedes crearate un grupo (tecnología) que incluye el término 't', 'e', ​​'c',' h.'

Para tener una idea clara, veamos un ejemplo.

$ grep 'technol\(ogy\)\?' tech.txt

Con la agrupación, puedes hacer coincidir la repetición.ateBuscar patrones, capturar grupos y buscar alternativas.

Búsqueda alternativa con agrupación

Veamos un ejemplo de búsqueda alternativa.

$ grep "\(tech\|technology\)" tech.txt

Si desea realizar una búsqueda en una cadena, deberá pasarla con el símbolo de tubería. Veámoslo en el siguiente ejemplo.

$ echo “tech technological technologies technical” |  grep "\(tech\|technology\)"
#output

“tech technological technologies technical”

Grupos de captura, grupos de no captura y repeticiónatePatrones

¿Y qué pasa con los grupos de captura y no captura?

Necesitarás crearate un grupo en la expresión regular y pasarlo a la cadena o un archivo para capturar grupos.

$ echo 'tech655 tech655nical technologies655 tech655-oriented 655' | grep "\(tech\)\(655\)"
#output

tech655 tech655nical technologies655 tech655-oriented 655

Y, para los grupos que no capturan, deberá usar el ?: entre paréntesis.

Por último, tenemos repatepatrones d. Deberá modificar la expresión regular para verificar la repetición.atepatrones d.

$ echo ‘teach tech ttrial tttechno attest’ | grep '\(t\+\)'
#output

‘teach tech ttrial tttechno attest’

Aquí, la expresión regular busca una o más instancias del carácter 't'.

#4. Clases de personajes

Con las clases de caracteres, puede escribir expresiones regulares fácilmente. Estas clases de caracteres utilizan square soportes. Algunas de las clases de personajes más conocidas incluyen:

  • [:dígito:] – 0 a 9 dígitos
  • [:alfa:] - caracteres alfabéticos
  • [: alnum:] - caracteres alfanuméricos
  • [:más bajo:] - letras minusculas
  • [:superior:] - letras mayúsculas
  • [: xdigit:] – dígitos hexadecimales, incluidos 0-9, AF, af
  • [:blanco:] – caracteres en blanco como tabulador o espacio

¡Y así!

Veamos algunos de ellos en acción.

$ grep [[:digit]] tech.txt
$ grep [[:alpha:]] tech.txt
$ grep [[:xdigit:]] tech.txt

#5. Cuantificadores

Los cuantificadores son metacaracteres y están en el centro de expresiones regulares. Estos le permiten hacer coincidir las apariencias exactas. Veámoslos a continuación.

  • * → Zero o más coincidencias
  • + → una o más coincidencias
  • ? → Zero o uno coincide
  • {X} → x coincidencias
  • {X, } → x o más coincidencias
  • {x, z} → de x a z coincide
  • {,z} → hasta z coincidencias
$ echo ‘teach tech ttrial tttechno attest’ | grep -E 't+'
#output

‘teach tech ttrial tttechno attest’

Aquí, busca el 't ' instancias de caracteres para una o más coincidencias. Aquí -E significa expresión regular extendida (que discutiremos later.)

#6. Regex extendido

Si no le gusta agregar caracteres de escape en el patrón de expresiones regulares, debe usar expresiones regulares extendidas. Elimina la necesidad de agregar caracteres de escape. Para hacerlo, deberá usar el indicador -E.

$ grep -E 'in+ovation' tech.txt

#7. Uso de PCRE para realizar búsquedas complejas

PCRE (expresión regular compatible con Perl) le permite hacer mucho más que escribir expresiones básicas. Por ejemplo, puede escribir "\d" que denota [0-9].

Por ejemplo, puede usar PCRE para buscar direcciones de correo electrónico.

echo "Contact me at nitish@newdomain.com" | grep -P "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"
#output

Contact me at nitish@newdomain.com

Aquí, PCRE garantiza que el patrón coincida. De manera similar, también puede usar un patrón PCRE para verificar date .

$ echo "The Sparkain site launched on 2023-07-29" | grep -P "\b\d{4}-\d{2}-\d{2}\b"
#output

The Sparkain site launched on 2023-07-29

El comando encuentra la date in AAAA-MM-DD formato. Puedes modificarlo para que coincida con otros d.ate formato también. 

#8. Alternancia

Si desea coincidencias alternativas, puede utilizar los caracteres de canalización con escape (\|).

$ grep -L ‘warning\|error’ /var/log/*.log
#output

/var/log/alternatives.log

/var/log/bootstrap.log

/var/log/dpkg.log

/var/log/fontconfig.log

/var/log/ubuntu-advantage.log

/var/log/upgrade-policy-changed.log

El resultado enumera los nombres de archivo que contienen "advertencia" o "error".

Palabras finales

Esto nos lleva al final de nuestra guía grep y regex. Puede utilizar grep con expresiones regulares ampliamente para refinar las búsquedas. Con un uso correcto, puede ahorrar mucho tiempo y ayudar a automatizarate muchas tareas, especialmenteally si los está utilizando para escribir scripts o utilizar la expresión regular al realizar búsquedas en el texto.

A continuación, echa un vistazo preguntas y respuestas frecuentes de la entrevista de Linux.

Comparte en:
  • Nitish Singh
    Autor
    Tengo la certificación C1 Advanced (MCER) writer con una maestría en informática (Nivel B de NIELIT, India) y siete años de experiencia en escritura. Mi experiencia incluye escribir para la Web y cubrir diversos temas, incluidos Web3,…

Gracias a nuestros patrocinadores

Más lecturas excelentes sobre Linux

Impulse su negocio

Algunas de las herramientas y servicios para ayudar a su negocio grow.
  • La herramienta de conversión de texto a voz que utiliza IA para generarate Voces realistas parecidas a las humanas.

    Intente Murf AI
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.

    Prueba Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno para ayudarlo a administrar proyectos, tareas, trabajo, ventas, CRM, operaciones, workflows, y más.

    Intente Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.

    Intente Intruder