Búsqueda de sitios web

Comando Grep en Linux/UNIX


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 agreguemos 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
$ 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 el 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 

Buscando 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 el indicador -r como se muestra

$ grep -r "string-name" *

Por ejemplo

$ grep -r "linux" *

Ignorando 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 el indicador -i y ejecute el siguiente comando

$ grep -i "linux" welcome.txt

Cuente 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

Usando Grep para invertir la salida

Para invertir la salida Grep, use el indicador -v. La opción -v 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
$ grep -v "Linux" welcome.txt

Numere las líneas que contienen el patrón de búsqueda con la opción -n

Para numerar las líneas donde coincide el patrón de cadena, use la opción -n como se muestra

$ grep -n "Linux" welcome.txt

Busque la palabra que coincida exactamente con la opción -w

Al pasar el indicador -w se buscará la línea que contiene la palabra coincidente exacta como se muestra

$ grep -w "opensource" welcome.txt
$ grep -w "open" welcome.txt

¡NO se devolverán resultados porque no estamos buscando 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 comando dpkg -l a grep como se muestra

$ dpkg -L | grep -i "openssh"

Mostrar el número de líneas antes o después de un patrón de búsqueda Usar tuberías

Puede usar -A o -B para mostrar el número de líneas que preceden o vienen después de la cadena de búsqueda. El indicador -A denota las líneas que vienen después de la cadena de búsqueda y -B imprime la salida que aparece antes de la cadena de búsqueda. Por ejemplo

$ ifconfig | grep -A 4 ens3
$ ifconfig | grep -B 4 ether

Usando grep con expresiones regulares (REGEX)

El término REGEX es un acrónimo de REGular EXpression. Un REGEX es una secuencia de caracteres que se utiliza para hacer coincidir un patrón. Abajo 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 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 
$ grep x$ welcome.txt

Obtener 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 otros indicadores u opciones que puede usar junto con el comando.

$ grep --help