GNU/Linux >> Tutoriales Linux >  >> Linux

Grep Regex:una guía completa

Introducción

El grep comando (abreviatura de G global R E regular expresiones x P print) es una poderosa herramienta de procesamiento de texto para buscar archivos y directorios.

Cuando grep se combina con regex (registro ular ex presiones), la búsqueda avanzada y el filtrado de resultados se simplifican. Los administradores de sistemas, los desarrolladores y los usuarios habituales se benefician al dominar las expresiones regulares con grep dominio.

Esta guía le enseña cómo grep con expresiones regulares a través de ejemplos.

Requisitos previos

  • Acceso a la terminal/línea de comando.
  • Un archivo de texto para buscar. Los ejemplos usan .bashrc archivo.
  • Uso básico del comando grep.

Expresión regular de grep

La sintaxis de grep El comando incluye expresiones regulares en el siguiente formato:

grep [regex] [file]

Las expresiones regulares son declaraciones simples que ayudan a filtrar datos y archivos. Muchos comandos de Linux, como el comando awk o el comando sed, también usan expresiones regulares para buscar y manipular información.

Dos tipos de caracteres generales componen una declaración de expresiones regulares:

  • Literales , que son caracteres de texto estándar.
  • Especial caracteres o metacaracteres tienen un significado especial a menos que se escape con una barra invertida (\< ).

El grep El comando ofrece tres opciones de sintaxis de expresiones regulares:

1. Expresión regular básica (BRE )

2. Expresiones regulares extendidas (ERE )

3. Expresiones regulares compatibles con Pearl (PCRE )

Por defecto, grep utiliza el BRE sintaxis.

Ejemplo de expresión regular de Grep

Ejecute el siguiente comando para probar cómo funciona grep regex:

grep if .bashrc

La expresión regular busca la cadena de caracteres. El resultado muestra todas las instancias donde la letra i aparece seguido de una f en el .bashrc expediente. Por lo tanto, la salida destaca los siguientes resultados:

  • si
  • elsi
  • nosi y
  • identificaciónsi ying

El comando devuelve solo aquellas líneas donde hay una coincidencia.

Cómo usar Regex con Grep

Regex ofrece muchas posibilidades para refinar las búsquedas con grep . A continuación se muestran algunos ejemplos comunes que explican la sintaxis y la lógica básicas. Combine coincidencias para crear declaraciones de expresiones regulares complejas.

Coincidencias literales

Las coincidencias literales hacen una coincidencia exacta para la cadena de caracteres especificada. La expresión de ejemplo anterior para if demuestra una coincidencia literal.

La búsqueda distingue entre mayúsculas y minúsculas. El siguiente comando devuelve resultados diferentes a los del ejemplo anterior:

grep If .bashrc

Para buscar varias palabras, agregue comillas:

grep "if the" .bashrc

Omitir las comillas trata la segunda palabra como un archivo o ubicación.

Coincidencias ancla

Las coincidencias de anclaje especifican la ubicación de la línea en la búsqueda. Hay dos tipos de anclaje:

  • El signo de intercalación (^ ) busca líneas de coincidencia que comiencen con la expresión proporcionada.
  • El signo de dólar ($ ) busca líneas de coincidencia que terminen con el literal proporcionado.

Por ejemplo, para hacer coincidir líneas que comienzan con la palabra alias en el .bashrc archivo, use:

grep ^alias .bashrc

La búsqueda no muestra líneas con tabuladores o espacios antes de la palabra.

Para hacer coincidir las líneas que terminan con la palabra then en el .bashrc archivo, ejecute:

grep then$ .bashrc

Use ambos anclajes para crear una declaración de expresiones regulares que busque una sola palabra o declaración en una línea:

grep ^esac$ .bashrc

Use solo anclas para encontrar líneas vacías en un archivo. Agrega el -n opción para mostrar números de línea en la salida:

grep -n ^$ .bashrc

Sin el -n opción, la salida está en blanco.

Haz coincidir cualquier personaje

El período (. ) el metacarácter de expresiones regulares coincide con cualquier carácter en lugar del signo. Por ejemplo:

grep r.o .bashrc

El resultado muestra todas las instancias de la letra r , seguido de cualquier carácter, seguido de o . El punto puede ser cualquier carácter, como una letra, un número, un signo o un espacio.

Agregue varios puntos para indicar varios marcadores de posición de caracteres:

grep r..t .bashrc

Combine con la coincidencia de anclaje para crear una declaración de expresión regular compleja. Por ejemplo:

grep ..t$ .bashrc

La declaración encuentra todas las líneas con dos caracteres seguidos de la letra t al final.

Expresiones de paréntesis

Las expresiones de paréntesis permiten hacer coincidir varios caracteres o un rango de caracteres en una posición. Por ejemplo, para hacer coincidir todas las líneas que contienen and o end en el .bashrc archivo, use el siguiente patrón:

grep [ae]nd .bashrc

Las expresiones entre paréntesis permiten excluir caracteres agregando el signo de intercalación (^ ) señal. Por ejemplo, para hacer coincidir todo excepto and o end , usa:

grep [^ae]nd .bashrc

Use expresiones de paréntesis para especificar un rango de caracteres agregando un guión (- ) entre la primera y la última letra. Por ejemplo, busque todas las instancias de letras mayúsculas:

grep [A-Z] .bashrc

Combine expresiones de paréntesis con coincidencias de anclaje para encontrar todas las palabras que comiencen con letras mayúsculas:

grep ^[A-Z] .bashrc

Las expresiones entre paréntesis permiten múltiples rangos. Por ejemplo, haga coincidir todos los caracteres que no sean letras con:

grep [^a-zA-Z] .bashrc

La salida resalta números y caracteres, ignorando todas las letras.

Clases de personajes

Grep ofrece clases de caracteres estándar como funciones predefinidas para simplificar las expresiones entre paréntesis. A continuación se muestra una tabla que describe algunas clases y la expresión entre paréntesis equivalente.

La lista completa de clases de caracteres grep se encuentra en el manual de grep.

Cuantificadores

Los cuantificadores son metacaracteres que especifican el número de apariciones. La siguiente tabla muestra la sintaxis de cada cuantificador grep con una breve descripción.

Sintaxis Descripción Equivalente
[[:alnum:]] Todas las letras y números. "[0-9a-zA-Z]"
[[:alpha:]] Todas las letras. "[a-zA-Z]"
[[:blank:]] Espacios y tabulaciones. [CTRL+V<TAB> ]
[[:digit:]] Dígitos del 0 al 9. [0-9]
[[:lower:]] Letras minúsculas. [a-z]
[[:punct:]] Puntuación y otros caracteres. "[^a-zA-Z0-9]"
[[:upper:]] Letras mayúsculas. [A-Z]
[[:xdigit:]] Dígitos hexadecimales. "[0-9a-fA-F]"

El * El signo coincide con un patrón cero o más veces. Para demostrarlo, ejecute el siguiente comando:

grep m*and .bashrc

En este caso, el * signo coincide con la letra m cero o más veces. Por lo tanto, "and , mand , mand " son todas coincidencias. La letra m se repite cualquier cantidad de veces cuando va seguido de * firmar.

Para hacer coincidir cero o exactamente una coincidencia, use el ? señal. Encierre la declaración entre comillas simples y escape el carácter para evitar la interpretación. Por ejemplo:

grep 'm\?and' .bashrc

Alternativamente, use expresiones regulares extendidas para evitar escapes:

grep -E 'm?and' .bashrc

El resultado resalta todas las instancias de and o mand .

Utilice cuantificadores de rango para especificar un número exacto de repeticiones. Por ejemplo, busque cadenas con dos vocales:

grep '[aeiouAEIOU]\{2\}' .bashrc
grep -E '[aeiouAEIOU]{2}' .bashrc

La salida resalta todas las palabras con dos vocales.

Alternancia

La alternancia permite definir coincidencias alternativas. Encierre las cadenas alternativas entre comillas simples y sepárelas con un carácter de tubería escapada (\| ).

Por ejemplo, para buscar las palabras bash o alias en el .bashrc archivo, use:

grep 'bash\|alias' .bashrc

Alternativamente, use expresiones regulares extendidas y omita el carácter de escape:

grep -E 'bash|alias' .bashrc

La salida resalta ambas instancias de cadena en el archivo.

Agrupar

Las expresiones regulares permiten agrupar patrones en un elemento. Coloque el grupo entre paréntesis con escape para expresiones regulares regulares, o use extendido.

Por ejemplo, busque la cadena bashrc y hacer el rc caracteres opcionales:

grep 'bash\(rc\)\?' .bashrc
grep -E 'bash(rc)?' .bashrc

La salida resalta todas las instancias de bashrc . Desde rc es opcional, el comando también coincide con la palabra bash .

Expresiones de barra invertida especiales

El comando grep ofrece algunas expresiones únicas de barra invertida para la coincidencia avanzada de límites de palabras. A continuación se muestra una tabla con ejemplos breves para cada tipo de expresión.

Sintaxis Descripción
* Cero o más coincidencias.
? Cero o una coincidencia.
+ Una o más coincidencias.
{n} n coincidencias.
{n,} n o más coincidencias.
{,m} Hasta m coincidencias.
{n,m} De n hasta m coincidencias.

Por ejemplo, use \b límites para ubicar una palabra que no es parte de otra palabra:

grep '\bse[et]\b' .bashrc

La expresión localiza palabras see y set . El límite asegura el aislamiento de palabras.

Escapar de metacaracteres

Los metacaracteres de escape tratan los caracteres especiales como literales. Por ejemplo, para buscar un punto (.) al final de una línea, escape el metacarácter:

grep '\.$' .bashrc

No permitir la interpretación de caracteres ayuda cuando se busca en el código fuente o en los archivos de configuración.


Linux
  1. ¿Qué es Kubernetes? Guía completa

  2. Cómo instalar Void Linux:una guía completa paso a paso

  3. Guía completa para usar AsciiDoc en Linux

  4. La guía completa para principiantes de LVM en Linux

  5. Se necesita expresión regular (grep) para la búsqueda de varias líneas

Una guía completa para instalar Tomcat en Linux

Ubuntu Firewall UFW:una guía completa

La guía completa para instalar MySQL en Ubuntu

10 ejemplos prácticos de expresiones regulares con grep

Comandos de directorio de Linux:una guía completa

Cronjob - La guía completa de Cronjobs

    Sintaxis Ejemplo Coincidencias
    (El texto en negrita representa coincidencias)
    \b '\band\b' y
    "y "
    \y \
    y
    y
    \B '\Band' _y
    _y _
    arenay
    hy y
    \< '\ y
    "y "
    y y
    y _
    y
    y
    \> 'and\>' y
    "y"
    arenay
    _y
    y
    y
    \w '\wand' _and
    _y _
    mano y
    arena
    \W '\Wand' "y "
    /y // td>
    \s '\arena' y
    y
    \S '\Sand' _and
    "y "
    arena
    mano y
    _y _
    /y // td>