¿Qué es Grep?
Grep, abreviatura de “global regular expression print”, es un comando utilizado para buscar y hacer coincidir patrones de texto en archivos que contienen expresiones regulares. Además, el comando viene preinstalado en todas las distribuciones de Linux. En esta guía, examinaremos los usos más comunes del comando grep, junto con casos de uso populares.
Comando Grep en Linux
El comando Grep se puede utilizar para encontrar o buscar una expresión regular o una cadena en un archivo de texto. Para demostrar esto, creemos un archivo de texto welcome.txt y agreguemos algún contenido como se muestra.
Welcome to Linux !
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.
¡Genial! Ahora estamos listos para realizar algunos comandos grep y manipular la salida para obtener los resultados deseados. Para buscar una cadena en un archivo, ejecuta el siguiente comando Sintaxis
$ grep "string" file name
O
$ filename grep "string"
Ejemplo:
$ grep "Linux" welcome.txt
Resultado Como puedes ver, grep no solo ha buscado y coincidido con la cadena “Linux”, sino que también ha impreso las líneas en las que aparece la cadena. Si el archivo está ubicado en una ruta diferente, asegúrate de especificar la ruta del archivo como se muestra a continuación.
$ grep "string" /path/to/file
Colorizando los resultados de Grep usando la opción –color
Si estás trabajando en un sistema que no muestra la cadena de búsqueda o patrón en un color diferente al resto del texto, utiliza la opción --color
para resaltar tus resultados. Ejemplo
$ grep --color "free and opensource" welcome.txt
Salida
Buscando una cadena de forma recursiva en todos los directorios
Si deseas buscar una cadena en tu directorio actual y en todos los subdirectorios, utiliza la bandera -r
como se muestra
$ grep -r "string-name" *
Por ejemplo
$ grep -r "linux" *
Salida
Ignorando la sensibilidad a mayúsculas y minúsculas
En el ejemplo anterior, nuestros resultados de búsqueda nos dieron lo que queríamos porque la cadena “Linux” estaba especificada en mayúsculas y también existe en el archivo en mayúsculas. Ahora intentemos buscar la cadena en minúsculas.
$ grep "linux" file name
¡Nada en la salida, ¿verdad? Esto se debe a que la búsqueda no pudo encontrar y coincidir con la cadena “linux” ya que la primera letra está en minúsculas. Para ignorar la sensibilidad a mayúsculas y minúsculas, usa la bandera -i
y ejecuta el siguiente comando
$ grep -i "linux" welcome.txt
Resultado ¡Increíble, ¿no? La opción
-i
se utiliza normalmente para mostrar cadenas independientemente de su sensibilidad a mayúsculas y minúsculas.
Contar las líneas donde las cadenas coinciden con la opción -c
Para contar el número total de líneas donde aparece o reside el patrón de cadena, ejecuta el siguiente comando
$ grep -c "Linux" welcome.txt
Resultado
Usando Grep para invertir la salida
Para invertir la salida de Grep, usa la bandera -v
. La opción -v
le indica a grep que imprima todas las líneas que no contienen o coinciden con la expresión. La opción -v le dice a grep que invierta su salida, lo que significa que en lugar de imprimir líneas coincidentes, haga lo contrario e imprima todas las líneas que no coinciden con la expresión. Volviendo a nuestro archivo, veamos los números de línea como se muestra. Presiona ESC en el editor Vim, escribe dos puntos seguido por
set nu
Luego, presiona Enter Salida Ahora, para mostrar las líneas que no contienen la cadena “Linux”, ejecuta
$ grep -v "Linux" welcome.txt
Salida Como puedes ver, grep ha mostrado las líneas que no contienen el patrón de búsqueda.
Numerar las líneas que contienen el patrón de búsqueda con la opción -n
Para numerar las líneas donde se coincide el patrón de cadena, usa la opción -n
como se muestra
$ grep -n "Linux" welcome.txt
Salida
Busque la palabra exacta coincidente usando la opción -w
Pasar entonces la bandera -w
buscará la línea que contenga la palabra exacta coincidente como se muestra
$ grep -w "opensource" welcome.txt
Salida Sin embargo, si intenta
$ grep -w "open" welcome.txt
NO se devolverán resultados porque no estamos buscando un patrón sino una palabra exacta!
Uso de tuberías con grep
El comando grep se puede usar junto con tuberías para obtener una salida distinta. Por ejemplo, si desea saber si un paquete específico está instalado en el sistema Ubuntu, ejecute
$ dpkg -L | grep "package-name"
Por ejemplo, para averiguar si OpenSSH ha sido instalado en su sistema, pase el comando dpkg -l
a grep como se muestra
$ dpkg -L | grep -i "openssh"
Salida
Mostrando el número de líneas antes o después de un patrón de búsqueda usando tuberías
Puedes usar las opciones -A o -B para mostrar el número de líneas que preceden o siguen al texto de búsqueda. La bandera -A indica las líneas que siguen al texto de búsqueda, mientras que -B imprime el resultado que aparece antes del texto de búsqueda. Por ejemplo
$ ifconfig | grep -A 4 ens3
Este comando muestra la línea que contiene la cadena más 4 líneas de texto después de la cadena ens en el comando ifconfig
. Salida Por otro lado, en el ejemplo siguiente, el uso de la opción -B mostrará la línea que contiene la cadena de búsqueda más 3 líneas de texto antes de la cadena ether en el comando
ifconfig
. Salida
$ ifconfig | grep -B 4 ether
Usando grep con REGEX – expresiones regulares
El término REGEX es un acrónimo de REGular EXpression. Un REGEX es una secuencia de caracteres que se utiliza para coincidir con un patrón. A continuación, hay algunos ejemplos:
^ Matches characters at the beginning of a line
$ Matches characters at the end of a line
"." Matches any character
[a-z] Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets
Ejemplo Para imprimir líneas que comienzan con un cierto carácter, la sintaxis es;
grep ^character file_name
Por ejemplo, para mostrar las líneas que comienzan con la letra “d” en nuestro archivo welcome.txt, ejecutaríamos
$ grep ^d welcome.txt
Salida Para mostrar líneas que terminan con la letra ‘x’, ejecutar
$ grep x$ welcome.txt
Salida
Obtener ayuda con más opciones de Grep
Si necesitas aprender más sobre el uso del comando Grep, ejecuta el siguiente comando para obtener un adelanto de otras banderas u opciones que puedes usar junto con el comando.
$ grep --help
Salida de muestra Agradecemos tu tiempo al revisar este tutorial. Siéntete libre de probar los comandos y hacernos saber cómo te fue.
Source:
https://www.digitalocean.com/community/tutorials/grep-command-in-linux-unix