En este tutorial, vamos a aprender sobre "grep" dominio. Grep significa G r global e regular expresión x p imprimir Como su nombre lo indica, Grep se utiliza para buscar archivos de texto con expresiones regulares. (en breve regex ). Imprime las líneas que coinciden con el patrón dado en un archivo de texto. Si no se proporciona ningún archivo, grep buscará recursivamente el patrón dado en los archivos del directorio actual. Grep tiene dos variantes, a saber, egrep y fgrep . Estas variantes están en desuso, pero se proporcionan por compatibilidad con versiones anteriores. En lugar de usar "grep -E" y "grep -F", puede usar "egrp" y "fgrep", respectivamente. Sin más preámbulos, comencemos.
Ejemplos de comandos Grep
Tengo un archivo llamado file.txt con algunas palabras al azar. Echemos un vistazo a file.txt:
$ cat file.txt ostechnix Ostechnix o$technix linux linus unix technology hello world HELLO world
Para comenzar la búsqueda, simplemente escriba grep seguido de lo que está buscando y desde dónde lo está buscando. Por ejemplo, voy a buscar la cadena "nix" en archivo.txt. Para hacerlo, ejecuto:
$ grep nix file.txt
Salida de muestra:
ostechnix Ostechnix o$technix unix
Como puede ver en el resultado anterior, tenemos dos palabras que contienen el patrón coincidente "nix". Si la cadena de búsqueda tiene dos palabras, menciónelas entre comillas simples como se muestra a continuación.
$ grep 'hello world' file.txt hello world
También puede usar -n bandera para mostrar los números de línea en la salida:
$ grep -n nix file.txt
Salida de muestra:
1:ostechnix 2:Ostechnix 3:o$technix 6:unix
Esto puede ser útil cuando trabaja con un código muy largo.
Tenga en cuenta que grep distingue entre mayúsculas y minúsculas . Por ejemplo, cuando busca "os" , no va a mostrar líneas que contengan letras mayúsculas, es decir, Os.
Compruebe el siguiente ejemplo.
$ grep os file.txt ostechnix
Pero tengo otra palabra llamada "Ostechnix" en file.txt, pero grep no la incluyó.
Sin embargo, si desea ignorar mayúsculas y minúsculas, puede usar "-i" marca como a continuación.
$ grep -i os file.txt ostechnix Ostechn1x
$ grep -i 'hello world' file.txt hello world HELLO world
Ahora, a grep no le importó el caso y obtuvimos las palabras que contienen letras mayúsculas y minúsculas en el resultado.
También podemos canalizar una salida de un comando a grep. Echa un vistazo al siguiente ejemplo.
$ cat file.txt | grep os ostechnix
Ahora mira lo que tenemos. La salida del archivo.txt se canaliza a grep y se muestran las palabras que contienen las letras "os" en el archivo.txt.
También podemos usar algunos caracteres especiales o expresiones regulares en grep.
- ^ - buscar al principio de la línea.
- $ - buscar al final de la línea.
- . - Buscar cualquier personaje.
Déjame mostrarte un ejemplo, para que puedas entender dónde y cómo usar esos caracteres especiales.
Ya lo sabes, podemos buscar las palabras que contienen la cadena "tech" como a continuación.
$ grep tech file.txt ostechnix Ostechnix o$technix technology
Pero, ¿qué sucede si solo desea buscar las líneas que solo comienzan con la palabra "tecnología"? No desea mostrar todas las palabras que contienen la cadena, sino solo las palabras que tienen la cadena "tecnología" al principio. También es posible. Aquí es donde los caracteres especiales resultan útiles.
Para buscar las palabras que coincidan con el patrón "tecnología" al comienzo de la línea en un archivo, ejecute:
$ grep ^tech file.txt technology
Del mismo modo, podemos buscar las palabras que terminan con una o varias letras en particular, por ejemplo "x" , como a continuación.
$ grep x$ file.txt ostechnix Ostechnix o$technix linux unix
Además, puede encontrar las palabras que contienen cualquier carácter usando . (punto).
Por ejemplo, busquemos cualquier palabra que tenga "n" en el archivo.
$ grep .n file.txt ostechnix Ostechnix o$technix linux linus unix technology
Ahora debería tener una comprensión básica del uso de grep. Avancemos y aprendamos las otras dos variantes, a saber, egrep y fgrep .
Ejemplos de comandos Egrep
egrep significa e grep extendido . Es similar a "grep -E" dominio. Hará todas las cosas que hará grep. Sin embargo, proporciona algunas funcionalidades adicionales, como el uso de expresiones regulares complicadas, que el comando grep normal listo para usar.
Por ejemplo, podemos buscar cualquier palabra que comience con "l" o "o" .
Recuerde que usamos el símbolo de intercalación (^) para buscar palabras al comienzo de la línea. Por lo tanto, nuestro comando para la consulta anterior será:
$ egrep '^(l|o)' file.txt ostechnix o$technix linux linus
¿Ver? Tenemos todas las palabras que comienzan con "l" o "o". Tenga en cuenta que el comando grep normal no puede hacer esto.
Del mismo modo, podemos buscar las líneas que comienzan con cualquier rango de caracteres entre "l" a "u". Eso significa que obtendremos las líneas que comienzan con l, m, n, o, p, q, r, s, t y u. Todo lo demás se omitirá del resultado.
$ egrep '^[l-u]' file.txt ostechnix o$technix linux linus unix technology
Tenga en cuenta que he usado corchetes ([) para buscar el rango de palabras. Dado que grep distingue entre mayúsculas y minúsculas, no encontrará líneas que comiencen con letras mayúsculas en el rango dado.
Para mostrar todas las líneas que comienzan con letras mayúsculas y minúsculas, usamos:
$ egrep '^[l-u]|[L-U]' file.txt
O,
$ egrep '^([l-u]|[L-U])' file.txt
Salida de muestra:
ostechnix Ostechnix o$technix linux linus unix technology HELLO world
¿Ver? Ahora tenemos las palabras que comienzan con el rango de caracteres "l" a "u" (ya sea en mayúsculas o minúsculas).
Ejemplos de comandos Fgrep
fgrep significa f ast grep . Es similar a "grep -F" . fgrep no puede reconocer expresiones regulares o caracteres especiales. fgrep se puede usar donde desea que se evalúen las expresiones regulares.
Por ejemplo, usamos el siguiente comando para encontrar las palabras que terminan en "x" .
$ grep x$ file.txt ostechnix Ostechnix o$technix linux unix
Ahora ejecute el mismo comando con fgrep.
$ fgrep x$ file.txt
No mostrará nada porque no pudo evaluar los caracteres especiales.
Ahora veamos otro ejemplo. Para buscar las palabras que coincidan con la cadena "o$" con el comando grep, hacemos:
$ grep o$ file.txt
Pero, no conseguimos nada, ¿por qué? Porque, según el comando anterior, usamos el símbolo de dólar ($) para encontrar las palabras que terminan en "o". Como no había caracteres que terminaran en "o" en el archivo.txt, no obtenemos nada.
Ahora, ejecuta el mismo comando con fgrep.
$ fgrep o$ file.txt o$technix
¿Ver? Aquí es donde usamos el comando fgrep. Simplemente ignora el símbolo del dólar (el carácter especial, por supuesto) y muestra la palabra que contiene la cadena "o$".
Para obtener más detalles sobre grep, escriba:
$ grep --help
Dará todas las opciones posibles. O consulte las páginas del manual.
$ man grep
Lectura sugerida:
- Aprenda a usar las páginas man de manera eficiente
Etimología de grep
Grep fue escrito de la noche a la mañana por Ken Thompson , el mismo tipo que escribió Unix. Pero, ¿por qué y cómo obtuvo su nombre? Profesor Brian Kernighan explica la etimología de grep en este video.
Y eso es todo. Grep es uno de los comandos importantes que debes aprender a fondo.
Ahora sabe qué es grep y cómo usarlo para buscar archivos de texto con patrones coincidentes en GNU/Linux. También aprendiste cómo Grep obtuvo su nombre. Espero que esto haya sido útil.