comando grep en Unix/Linux

El filtro grep busca en un archivo un patrón particular de caracteres y muestra todas las líneas que contienen ese patrón. El patrón que se busca en el archivo se denomina expresión regular (grep significa búsqueda global de expresión regular e impresión). Sintaxis: 
 
 

grep [options] pattern [files]
Options Description
-c : This prints only a count of the lines that match a pattern
-h : Display the matched lines, but do not display the filenames.
-i : Ignores, case for matching
-l : Displays list of a filenames only.
-n : Display the matched lines and their line numbers.
-v : This prints out all the lines that do not matches the pattern
-e exp : Specifies expression with this option. Can use multiple times.
-f file : Takes patterns from file, one per line.
-E : Treats pattern as an extended regular expression (ERE)
-w : Match whole word
-o : Print only the matched parts of a matching line,
 with each such part on a separate output line.

-A n : Prints searched line and nlines after the result.
-B n : Prints searched line and n line before the result.
-C n : Prints searched line and n lines after before the result.

Comandos de muestra

Considere el siguiente archivo como una entrada. 
 

$cat > geekfile.txt
unix is great os. unix is opensource. unix is free os.
learn operating system.
Unix linux which one you choose.
uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.

1. Búsqueda sin distinción entre mayúsculas y minúsculas: la opción -i permite buscar una string sin distinción entre mayúsculas y minúsculas en el archivo dado. Coincide con palabras como «UNIX», «Unix», «unix». 
 

$grep -i "UNix" geekfile.txt

Producción: 
 

unix is great os. unix is opensource. unix is free os.
Unix linux which one you choose.
uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.

2. Mostrar el recuento del número de coincidencias: podemos encontrar el número de líneas que coincide con la string/patrón dado 
 

$grep -c "unix" geekfile.txt

Producción: 
 

2

3. Mostrar los nombres de archivo que coincidan con el patrón: solo podemos mostrar los archivos que contienen la string/patrón dado. 
 

$grep -l "unix" *

or

$grep -l "unix" f1.txt f2.txt f3.xt f4.txt

Producción: 
 

geekfile.txt

4. Comprobación de las palabras completas en un archivo: de forma predeterminada, grep coincide con la string/patrón dado incluso si se encuentra como una substring en un archivo. La opción -w de grep hace que coincida solo con las palabras completas. 
 

$ grep -w "unix" geekfile.txt

Producción: 
 

unix is great os. unix is opensource. unix is free os.
uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.

5. Mostrar solo el patrón coincidente: de forma predeterminada, grep muestra la línea completa que tiene la string coincidente. Podemos hacer que grep muestre solo la string coincidente usando la opción -o. 
 

$ grep -o "unix" geekfile.txt

Producción: 
 

unix
unix
unix
unix
unix
unix

6. Muestre el número de línea mientras muestra la salida usando grep -n: para mostrar el número de línea del archivo con la línea coincidente. 
 

$ grep -n "unix" geekfile.txt

Producción: 
 

1:unix is great os. unix is opensource. unix is free os.
4:uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.

7. Inversión de la coincidencia de patrón: puede mostrar las líneas que no coinciden con el patrón de string de búsqueda especificado utilizando la opción -v. 
 

$ grep -v "unix" geekfile.txt

Producción: 
 

learn operating system.
Unix linux which one you choose.

8. Hacer coincidir las líneas que comienzan con una string: el patrón de expresión regular ^ especifica el comienzo de una línea. Esto se puede usar en grep para hacer coincidir las líneas que comienzan con la string o patrón dado. 
 

$ grep "^unix" geekfile.txt

Producción: 
 

unix is great os. unix is opensource. unix is free os.

9. Hacer coincidir las líneas que terminan con una string: el patrón de expresión regular $especifica el final de una línea. Esto se puede usar en grep para hacer coincidir las líneas que terminan con la string o patrón dado. 
 

$ grep "os$" geekfile.txt

10.Especifica la expresión con la opción -e. Se puede usar varias veces: 
 

$grep –e "Agarwal" –e "Aggarwal" –e "Agrawal" geekfile.txt

11. Opción de archivo -f Toma patrones del archivo, uno por línea. 
 

$cat pattern.txt

Agarwal
Aggarwal
Agrawal
$grep –f pattern.txt  geekfile.txt

12. Imprime n líneas específicas de un archivo:  -A imprime la línea buscada y n líneas después del resultado, -B imprime la línea buscada y n líneas antes del resultado, y -C imprime la línea buscada y n líneas después y antes del resultado resultado. 

Sintaxis:

$grep -A[NumberOfLines(n)] [search] [file]  

$grep -B[NumberOfLines(n)] [search] [file]  

$grep -C[NumberOfLines(n)] [search] [file]  

Ejemplo:

$grep -A1 learn geekfile.txt

Producción:  

learn operating system.    
Unix linux which one you choose. 
--
uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.      

(Prints the searched line along with the next n lines (here n = 1 (A1).)
(Will print each and every occurrence of the found line, separating each output by --) 
(Output pattern remains the same for -B and -C respectively)                                                                                                                                       Unix linux which one you choose.                                                                                                                                            --                                                                                                                                                                          uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.                                                                                                                                                    Unix linux which one you choose.                                                                                                                                            --                                                                                                                                                                          uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.

13. Busque recursivamente un patrón en el directorio: -R imprime el patrón buscado en el directorio dado recursivamente en todos los archivos.

Sintaxis

$grep -R [Search] [directory]

 Ejemplo :

$grep -iR geeks /home/geeks

Producción:

./geeks2.txt:Well Hello Geeks
./geeks1.txt:I am a big time geek
----------------------------------
-i to search for a string case insensitively
-R to recursively check all the files in the directory.

Este artículo es una contribución de Akshay Rajput . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *