En los sistemas Linux y Unix, Grep, abreviatura de "impresión de expresión regular global", es un comando que se utiliza para buscar y hacer coincidir archivos de texto contenidos en las expresiones regulares. Además, el comando viene preinstalado en todas las distribuciones de Linux. En esta guía, veremos el uso del comando grep común con algunos ejemplos.
Comando Grep en Linux
El comando Grep se puede usar 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 agregue algo de 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.
¡Excelente! Ahora estamos listos para ejecutar algunos comandos grep y manipular la salida para obtener los resultados deseados.
Para buscar una cadena en un archivo, ejecute el siguiente comando
Sintaxis
$ grep "string" file name
O
$ filename grep "string"
Ejemplo :
$ grep "Linux" welcome.txt
Salida
Como puede ver, grep no solo ha buscado y encontrado la cadena "Linux", sino que también ha impreso las líneas en las que aparece la cadena.
Si el archivo se encuentra en una ruta de archivo diferente, asegúrese de especificar la ruta del archivo como se muestra a continuación
$ grep "string" /path/to/file
Colorear los resultados de Grep usando la opción –color
Si está trabajando en un sistema que no muestra la cadena o patrón de búsqueda en un color diferente al resto del texto, use el --color
para que sus resultados se destaquen.
Ejemplo
$ grep --color "free and opensource" welcome.txt
Salida
Buscar una cadena recursivamente en todos los directorios
Si desea buscar una cadena en su directorio actual y en todos los demás subdirectorios, busque usando - r
bandera como se muestra
$ grep -r "string-name" *
Por ejemplo
$ grep -r "linux" *
Salida
Ignorar la distinción entre mayúsculas y minúsculas
En el ejemplo anterior, nuestros resultados de búsqueda nos dieron lo que queríamos porque la cadena "Linux" se especificó 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 de la salida, ¿verdad? Esto se debe a que grepping no pudo encontrar y hacer coincidir la cadena "linux" ya que la primera letra está en minúsculas. Para ignorar la distinción entre mayúsculas y minúsculas, use -i
marcar y ejecutar el siguiente comando
$ grep -i "linux" welcome.txt
Salida
Impresionante ¿no? El - i
normalmente se usa para mostrar cadenas independientemente de la distinción entre mayúsculas y minúsculas.
Cuenta 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, ejecute el siguiente comando
$ grep -c "Linux" welcome.txt
Salida
Uso de Grep para invertir la salida
Para invertir la salida Grep, use -v
bandera. El -v
La opción indica a grep que imprima todas las líneas que no contengan o no coincidan 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 coincidan con la expresión. Volviendo a nuestro archivo, mostremos los números de línea como se muestra.
Presiona ESC en el editor Vim, escribe dos puntos seguidos de
set nu
A continuación, presione Entrar
Salida
Ahora, para mostrar las líneas que no contienen la cadena "Linux", ejecute
$ grep -v "Linux" welcome.txt
Salida
Como puede 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 en las que coincide el patrón de cadena, use -n
opción como se muestra
$ grep -n "Linux" welcome.txt
Salida
Busca la palabra que coincida exactamente con la opción -w
Pasando entonces -w
flag buscará la línea que contiene la palabra coincidente exacta 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 buscamos un patrón sino una palabra exacta!
Usando 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 determinado paquete está instalado en el sistema Ubuntu, ejecute
$ dpkg -L | grep "package-name"
Por ejemplo, para averiguar si se ha instalado OpenSSH en su sistema, canalice el dpkg -l
comando para grep como se muestra
$ dpkg -L | grep -i "openssh"
Salida
Mostrar el número de líneas antes o después de un patrón de búsqueda Usar canalizaciones
Puedes usar el -A o -B para mostrar el número de líneas que preceden o vienen después de la cadena de búsqueda. El -A marca denota las líneas que vienen después de la cadena de búsqueda y -B imprime el resultado que aparece antes de la cadena 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 ens cadena en el ifconfig
comando.
Salida
Por el contrario, en el siguiente ejemplo, el uso de la bandera -B mostrará la línea que contiene la cadena de búsqueda más 3 líneas de texto antes del éter cadena en el ifconfig
comando.
Salida
$ ifconfig | grep -B 4 ether
Uso de grep con expresiones regulares (REGEX)
El término REGEX es un acrónimo de REG ular EX presion Un REGEX es una secuencia de caracteres que se utiliza para hacer coincidir un patrón. A continuación se muestran 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 carácter determinado, 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 las líneas que terminan con la letra 'x' ejecutar
$ grep x$ welcome.txt
Salida
Obtención de ayuda con más opciones de Grep
Si necesita obtener más información sobre el uso del comando Grep, ejecute el siguiente comando para obtener una vista previa de otras banderas u opciones que puede usar junto con el comando.
$ grep --help
Salida de muestra
Agradecemos su tiempo para leer este tutorial. Siéntase libre de probar los comandos y háganos saber cómo le fue.