GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar grep en Linux

Una de las operaciones más utilizadas en la terminal de Linux es la búsqueda a través de archivos de texto y el filtrado de flujos de error o salida estándar. Linux proporciona una gran herramienta que nos permite resolver esa tarea con facilidad:grep. En este artículo, cubriremos los casos de uso más comunes para grep que definitivamente simplificarán su rutina diaria.

Que es grep

Grep significa impresión de expresión regular global. Esta es una utilidad muy útil cuando se trata de buscar en un gran conjunto de archivos de texto (registros, por ejemplo).

Grep es el comando más útil en Linux/Unix para administradores de sistemas, desarrolladores e ingenieros de DevOps. El propósito principal de esta herramienta es verificar cadenas o patrones en un archivo específico, o filtrar la salida de otros comandos.

Este patrón que mencionamos anteriormente, se conoce como expresión regular.

El comando grep imprime una línea en el terminal con la cadena si encuentra una coincidencia con la consulta de búsqueda.

Hay muchos ejemplos diferentes del uso de grep, así que veamos cómo y cuándo puedes usarlo.

Instalación de grep en Linux

Por lo general, grep se instala en la mayoría de los sistemas Linux e incluso en pequeños contenedores Docker. Pero si no lo tienes instalado en tu sistema, puedes hacerlo usando el siguiente comando, por ejemplo:

apt-get updateapt-get install -y grep

ejemplos de uso de grep

En esta parte del artículo, cubriremos los ejemplos más comunes del uso de grep.

Filtrar la salida de un comando

Puede usar el comando grep para buscar e imprimir cualquier línea de cualquier salida de comando de Linux que coincida con el patrón especificado.

En este ejemplo, comprobaremos qué paquetes de Python 3 tenemos en nuestro sistema Ubuntu:

dpkg -l | grep python3

En este ejemplo:

  • dpkg -l imprimirá todos los paquetes instalados
  • grep filtrará dpkg salida e impresión de solo cadenas, que contienen python3 cadena

De la misma manera, puede mostrar la información del modelo de CPU, por ejemplo:

grep -i 'Model' /proc/cpuinfo

Buscando cadena dentro de un archivo

En este ejemplo, el comando grep buscará la cadena "raíz" en el archivo '/etc/passwd' y lo imprimirá si se encuentra la cadena.

Por lo general, usamos este comando para verificar si el sistema tiene una cuenta de usuario con un nombre específico (ejemplo de root in out): 

grep root /etc/passwd

Buscar en varios archivos

Para encontrar la cadena en varios archivos a la vez, use el comando grep y especifique los nombres de los archivos en una sola fila. Puede usar expresiones regulares para buscar archivos por máscara.

Descarguemos Apache access.log de acceso público:

 mkdir -p /var/log/httpd
 cd /var/log/httpd
 wget http://www.almhuette-raith.at/apache-log/access.log 

Ahora, dividamos este archivo en varios archivos por 10000 líneas en el archivo:

Ahora, podemos buscar en los archivos el error del servidor HTTP 500:

grep ' 500 ' xac xad

Para buscar en todos los archivos dentro del directorio de trabajo actual, use * después del patrón.

En el siguiente ejemplo, el comando grep buscará 500 errores de servidor en todos los archivos:

grep ' 500 ' *

Con el -w opción en el comando grep, puede buscar los archivos que contienen un patrón de palabra:

grep -w 'Windows XP' *

El comando grep es lo suficientemente inteligente como para permitirnos realizar búsquedas independientemente de la distinción entre mayúsculas y minúsculas del patrón de búsqueda.

Para hacer eso, necesitamos usar -i como argumento.

Este es el mismo ejemplo, pero ahora estamos filtrando mayúsculas y minúsculas:

grep -i -w 'windows xp' *

Archivos de salida que contienen patrón de búsqueda

Puedes usar -l opción para mostrar todos los nombres de archivo que contienen el patrón buscado:

grep -l -i -w 'windows xp' *

Contar coincidencias por archivo

Si desea saber la cantidad de veces que su patrón coincidió en todos los archivos, agregue -c opción:

grep -c -i -w 'windows xp' *

Número de líneas antes del patrón buscado

Para ver las líneas en un archivo antes del patrón de búsqueda, agregue -B argumento seguido de la cantidad de números que desea recuperar del archivo:

grep -B 3 -i -w 'windows xp' xaf

Número de líneas después del patrón buscado

Del mismo modo, puede usar -A argumento para especificar el número de líneas a imprimir después del patrón buscado:

grep -A 3 -i -w 'windows xp' xaf

Imprime el número de línea para la coincidencia del patrón de búsqueda

Para ver el número de línea del patrón buscado encontrado, puede usar -n argumento:

grep -n -i -w 'windows xp' xaf

Hacer coincidir el comienzo de la cadena

En el siguiente ejemplo, usaremos el comando grep para encontrar todas las solicitudes originadas desde la dirección IP específica.

Todas las líneas buscadas deben comenzar desde el 5.34.180.192 plazo.

grep "^5.34.180.192" xaf

Hacer coincidir el final de la cadena

Añadir $ hasta el final del patrón para encontrar líneas que terminen con la cadena buscada:

grep "Chrome/62\" \"-\"$" xaf

Tan pronto como nuestra cadena de búsqueda contenga " símbolos, los estamos escapando con el \ .

Podemos usar grep para buscar múltiples patrones a la vez. Añadir -e argumento antes de cada patrón de búsqueda:

grep -e "Chrome/62\" \"-\"$" -e "15/Mar/2021:08:35:23" xaf

Aquí, estamos buscando todas las cadenas en el archivo que terminan en Chrome/62" "-" Y contener fecha y hora específicas 15/Mar/2021:08:35:23 .

Cambiando el color de salida

Como la salida en color aumenta la legibilidad, puede cambiarla a su color favorito configurando GREP_COLOR variable de entorno:

GREP_COLOR='1;35' grep --color=always 'admin' /etc/passwd

Puede obtener más información sobre la variable GREP_COLOR en la documentación oficial de grep.

Resumen

El comando grep es extremadamente útil cuando se trata de filtrar el contenido de los archivos de texto o el resultado de salida de los comandos. En este artículo, cubrimos los comandos grep más utilizados, que agilizarán su experiencia de shell.

Esperamos que este artículo te haya resultado útil. Si es así, por favor, ayúdanos a difundirlo por el mundo.


Linux
  1. Cómo usar el comando grep de Linux

  2. Cómo usar el comando grep en Linux/UNIX

  3. Cómo usar el comando Disown en Linux

  4. Cómo usar el comando Su en Linux

  5. Cómo usar el comando de pantalla de Linux

Cómo usar el comando grep en Debian 10

Cómo usar el comando sysctl en Linux

Cómo usar el comando de apagado de Linux

Cómo usar el comando Mkdir en Linux

Cómo usar el comando de trabajos en Linux

Uso del comando grep en Linux