GNU/Linux >> Tutoriales Linux >  >> Linux

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 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.


Linux
  1. Comando grep de Linux

  2. comando linux mv

  3. Linux du comando

  4. Comando IP de Linux

  5. Comando cd de linux

Linux frente a Unix

Comando ls en Linux/UNIX

comando cp en Linux/UNIX

Buscar comando en Linux/UNIX

Uso del comando grep en Linux

15 ejemplos prácticos de comandos Grep en Linux / UNIX