Tutorial del comando Grep: cómo buscar un archivo en Linux y Unix con búsqueda recursiva

grepsignifica Búsqueda global de expresiones regulares e impresión . Es una herramienta de línea de comandos utilizada en los sistemas UNIX y Linux para buscar un patrón específico en un archivo o grupo de archivos.

grepviene con muchas opciones que nos permiten realizar varias acciones relacionadas con la búsqueda en archivos. En este artículo, veremos cómo utilizar greplas opciones disponibles, así como las expresiones regulares básicas para buscar archivos.

Cómo utilizar grep

Sin pasar ninguna opción, grepse puede utilizar para buscar un patrón en un archivo o grupo de archivos. La sintaxis es:

grep ''  

Tenga en cuenta que se requieren comillas simples o dobles alrededor del texto si es más de una palabra.

También puede utilizar el comodín (*) para seleccionar todos los archivos de un directorio.

El resultado de esto son las ocurrencias del patrón (por la línea que se encuentra) en el archivo (s). Si no hay coincidencia, no se imprimirá ninguna salida en el terminal.

Por ejemplo, digamos que tenemos los siguientes archivos (llamados grep.txt):

Hello, how are you I am grep Nice to meet you 

El siguiente grepcomando buscará todas las apariciones de la palabra 'usted':

grep you grep.txt 

El resultado de esto es:

Hello, how are you Nice to meet you 

you Se espera que tenga un color diferente al del resto del texto para identificar fácilmente lo que se buscó.

Pero grepviene con más opciones que nos ayudan a lograr más durante una operación de búsqueda. Veamos nueve de ellos mientras los aplicamos al ejemplo anterior.

Opciones utilizadas con grep

1. -n(--line-number) - enumera los números de línea

Esto imprime las coincidencias para el texto junto con los números de línea. Si observa el resultado que tenemos arriba, notará que no hay números de línea, solo coincidencias.

grep you grep.txt -n 

Resultado:

1: Hello, how are you 3: Nice to meet you 

2. -c(--count): imprime el número de líneas de coincidencias

grep you grep.txt -c 

Resultado:

2 

Tenga en cuenta que si hubiera otro "usted" en la línea uno, la opción -ctodavía se imprimiría 2. Esto se debe a que se refiere al número de líneas donde aparecen las coincidencias, no al número de coincidencias.

3. -v(--invert-match): imprime las líneas que no coinciden con el patrón especificado

grep you grep.txt -v -n 

Resultado:

2. I am grep 

¿Note que también usamos la opción -n? Sí, puede aplicar varias opciones en un comando.

4. -i(--ignore-case) - utilizado para la insensibilidad a mayúsculas y minúsculas

# command 1 grep You grep.txt # command 2 grep YoU grep.txt -i 

Resultados:

# result 1 # no result # result 2 Hello, how are you Nice to meet you 

5. -l(--files-with-matches): imprime los nombres de los archivos que coinciden con un patrón

# command 1 grep you grep.txt -l # command 2 grep You grep.txt -i -l 

Resultados:

# result 1 grep.txt # result 2 # all files in the current directory that matches # the text 'You' case insensitively 
#### 6. `-w` (--word-regexp) - print matches of the whole word 

De forma predeterminada, grepcoincide con cadenas que contienen el patrón especificado. Esto significa que grep yo grep.txtimprimirá los mismos resultados que grep yo grep.txtporque 'yo' se puede encontrar en usted. Del mismo modo, 'ou'.

Con la opción -w, grepasegura que las coincidencias sean exactamente el mismo patrón que el especificado. Ejemplo:

grep yo grep.txt -w 

Resultado:

¡Sin resultados!

7. -o(--only-matching) - imprime solo el patrón coincidente

De forma predeterminada, grepimprime la línea donde se encuentra el patrón coincidente. Con la opción -o, solo el patrón coincidente se imprime línea por línea. Ejemplo:

grep yo grep.txt -o 

Resultado:

yo 

8. -A(--after-context) y -B(--before-context) - imprime las líneas después y antes (respectivamente) del patrón coincidente

grep grep grep.txt -A 1 -B 1 

Resultado:

Hello, how are you I am grep Nice to meet you 

Este patrón emparejado está en la línea 2. -A 1significa una línea después de la línea emparejada y -B 1significa una línea antes de la línea emparejada.

También hay una -Copción (--context) que es igual a -A+ -B. El valor pasado a -Cse usaría para -Ay -B.

9. -R(--dereference-recursive) - búsqueda recursiva

De forma predeterminada, grepno se pueden buscar directorios. Si intenta hacerlo, obtendrá un error ("Es un directorio"). Con la opción -R, es posible buscar archivos dentro de directorios y subdirectorios. Ejemplo:

grep you . 

Resultado:

# 'you' matches in a folders # and files starting from the # current directory 

Expresiones regulares para patrones

greptambién permite expresiones regulares básicas para especificar patrones. Dos de ellos son:

1. ^pattern- inicio de una línea

Este patrón significa que grepcoincidirá con las cadenas cuyas líneas comienzan con la cadena especificada después ^. Ejemplo:

grep ^I grep.txt -n 

Resultado:

2: I 

2. pattern$- final de una línea

A diferencia de ^, $especifica patrones que coincidirán si la línea termina con la cadena anterior $. Ejemplo:

grep you$ grep.txt 

Resultado:

1: Hello, how are you 3: Nice to meet you 

Envolver

grepes una poderosa herramienta para buscar archivos en la terminal. Comprender cómo usarlo le brinda la posibilidad de encontrar archivos fácilmente a través del terminal.

Hay más opciones adjuntas a esta herramienta. Puedes encontrar con man grep.