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