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