GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo buscar múltiples cadenas, patrones o palabras

Introducción

Grep es una potente utilidad disponible de forma predeterminada en los sistemas basados ​​en UNIX. El nombre significa Impresión de expresión regular global.

Usando el grep comando, puede personalizar cómo la herramienta busca un patrón o múltiples patrones en este caso. Puede grep varias cadenas en diferentes archivos y directorios. La herramienta imprime todas las líneas que contienen las palabras que especifica como patrón de búsqueda.

En esta guía, le mostraremos cómo usar grep para buscar múltiples palabras o patrones de cadenas . Siga los ejemplos de este tutorial para aprender a utilizar grep de la forma más eficaz.

Requisitos previos

  • Sistema similar a Linux o UNIX
  • Acceso a una terminal o línea de comandos
  • Un usuario con permisos para acceder a los archivos y directorios necesarios

Cómo agrupar varios patrones:sintaxis

La sintaxis básica de grep al buscar múltiples patrones en un archivo incluye el uso de grep comando seguido de cadenas y el nombre del archivo o su ruta.

Los patrones deben estar encerrados entre comillas simples y separados por el símbolo de tubería. Use la barra invertida antes de la tubería | para expresiones regulares.

grep 'pattern1\|pattern2' fileName_or_filePath

La última forma de usar grep es con -E opción. Esta opción trata el patrón que usó como una expresión regular extendida .

grep -E 'pattern1|pattern2' fileName_or_filePath

La versión obsoleta de grep extendido es egrep .

egrep 'pattern1|pattern2' fileName_or_filePath

Otra opción es agregar múltiples patrones separados al grep comando.

Para hacerlo, use el -e marque y siga agregando el número deseado de patrones de búsqueda:

grep -e pattern1 -e pattern2 fileName_or_filePath

¿Cuál es la diferencia entre grep, grep -E y egrep?

El egrep comando es una versión obsoleta de grep extendido. Hace la misma función que grep -E .

La diferencia entre grep y grep extendido es que grep extendido incluye metacaracteres que se agregaron más tarde.

Estos caracteres son los paréntesis () , corchetes {} y signo de interrogación . El carácter de barra vertical | también se trata como un metacarácter en grep extendido.

Ejemplos del uso de Grep para varias cadenas, patrones y palabras

Para asegurarse de que comprende cómo usar grep para buscar varias cadenas, le sugerimos que cree un archivo con algún texto en el que probaremos un par de casos de uso diferentes.

En nuestro caso, llamamos al archivo sample.txt y agregó algunos párrafos de texto. Almacenamos el archivo en el directorio de la prueba usuario, es decir, en /home/test/sample.txt

Cómo agrupar múltiples patrones en un archivo

En los ejemplos a continuación, usaremos grep en lugar de grep extendido. No olvide usar la barra invertida antes del carácter de barra vertical .

Dado que grep no admite el símbolo de canalización como operador de alternancia, debe usar el carácter de escape (barra invertida \) para decirle al grep comando para tratar la tubería de manera diferente.

Por ejemplo, para buscar las palabras extra y valor en el ejemplo.txt archivo use este comando:

grep 'extra\|value' sample.txt

La salida resalta la cadena que querías grep.

Si el mismo archivo está en otro directorio , debe navegar a ese directorio o usar la ruta completa del archivo:

grep 'extra\|value' /home/test/Desktop/sample.txt

Para buscar más de dos palabras , siga agregándolos de la misma manera.

Por ejemplo, para buscar tres palabras, agregue la cadena de caracteres deseada seguida de una barra invertida y barra vertical:

grep 'extra\|value\|service' sample.txt

Veamos cómo se ve el comando grep anterior cuando se usa grep -E , egrep y grep -e :

grep -E ‘extra|value|service’ sample.txt
egrep ‘extra|value|service’ sample.txt
grep -e extra -e value -e service sample.txt

Usaremos grep en más ejemplos, pero puede usar la sintaxis que prefiera.

Buscar múltiples coincidencias exactas en un archivo

Si desea encontrar coincidencias exactas para varios patrones, pase -w marca al grep comando.

grep -w 'provide\|count' sample.txt

Por ejemplo, el siguiente resultado muestra la diferencia entre buscar sin -w y con ella:

Como puedes ver, los resultados son diferentes. El primer comando muestra todas las líneas con las cadenas que usó.

El segundo comando muestra cómo grep coincidencias exactas para varias cadenas. La salida imprime solo las líneas que contienen las palabras exactas.

Ignorar mayúsculas y minúsculas al usar Grep para cadenas múltiples

Para evitar perderse algo cuando busca varios patrones, use -i marcar para ignorar mayúsculas y minúsculas.

Por ejemplo, ignoraremos mayúsculas y minúsculas con este comando:

grep -i 'phoenix\|linux' sample.txt

El resultado muestra cómo difieren los dos comandos. Si incluye el -i marcar e ignorar mayúsculas y minúsculas, el resultado de varias coincidencias incluye todas las coincidencias.

De esta manera, obtienes resultados adicionales. Si además agrega el -w marca a este comando, puede reducir aún más los resultados:

Mostrar el recuento de múltiples coincidencias en un archivo

Supongamos que está monitoreando un archivo de registro y desea ver si aumenta la cantidad de advertencias o mensajes. No desea ver resultados detallados cuando regresa una gran cantidad de coincidencias.

Por ejemplo, para mostrar el recuento de múltiples coincidencias en bootstrap.log archivo, introduzca:

grep -c 'warning\|error' /var/log/bootstrap.log

La salida imprime el número de coincidencias. De esta manera, puede determinar rápidamente si aumentó la cantidad de advertencias y errores.

Grep para múltiples patrones en un tipo de archivo específico

Puede usar grep para buscar varias cadenas solo en un determinado tipo de archivo. Si desea monitorear los archivos de registro en un directorio o si desea buscar en todos los archivos de texto, use un asterisco y la extensión del archivo en lugar de un nombre de archivo.

Por ejemplo, para buscar advertencias y errores a través de todos los .log archivos en el /var/log/ directorio, introduzca:

grep 'warning\|error' /var/log/*.log

Para demostrar mejor cómo funciona esta opción, solo mostraremos el recuento de coincidencias.

El resultado muestra todos los archivos en los que grep buscó las cadenas que usó.

Buscar recursivamente varios patrones en un archivo

El grep El comando busca solo en el directorio actual cuando usa el comodín asterisco.

Para incluir todos los subdirectorios al buscar varios patrones, agregue -R operador para grep:

grep -R 'warning\|error' /var/log/*.log

La salida devolverá los resultados de todos los archivos grep comando encontrado en /var/log/ directorio y sus subdirectorios.


Linux
  1. ¿Cómo especificamos múltiples patrones de ignorar para el comando `tree`?

  2. Linux:¿cómo saber qué hacer con Grep en Dmesg?

  3. ¿Cómo encontrar múltiples cadenas en archivos?

  4. ¿Cómo hago grep recursivamente?

  5. ¿Cómo buscar contenido de múltiples archivos pdf?

Cómo hacer Grep para múltiples cadenas y patrones

Cómo hacer un buen uso del comando 'grep'

¿Cómo puedo buscar un patrón de varias líneas en un archivo?

Búsqueda de una cadena en varios archivos en Linux

Cómo grep \n en el archivo

¿Busca múltiples patrones (palabras) con ack?