GNU/Linux >> Tutoriales Linux >  >> Linux

50 comandos grep productivos y prácticos para entusiastas de Linux

La herramienta grep en Linux y otros sistemas similares a Unix es una de las herramientas de línea de comandos más poderosas jamás desarrolladas. Se remonta al comando ed g/re/p y fue creado por el legendario Ken Thompson. Si es un usuario experimentado de Linux, sabrá la importancia de las expresiones regulares en el procesamiento de archivos. Sin embargo, muchos usuarios principiantes simplemente no tienen ni idea de ellos. A menudo vemos que los usuarios se sienten incómodos al usar tales técnicas. Sin embargo, la mayoría de los comandos grep no son tan complejos. Puedes dominar fácilmente grep dándole algo de tiempo. Si desea convertirse en un gurú de Linux, le recomendamos que utilice esta herramienta en la informática diaria.

Comandos grep esenciales para usuarios modernos de Linux

Una de las cosas más hermosas del comando grep de Linux es que puedes usarlo con todo tipo de cosas. Puede buscar patrones directamente en archivos o desde su salida estándar. Permite a los usuarios canalizar la salida de otros comandos a grep y localizar información específica. Los siguientes comandos describirán 50 de estos comandos.

Archivos de demostración para ilustrar los comandos grep de Linux

Dado que la utilidad grep de Linux funciona en archivos, hemos esbozado algunos archivos que puede usar para practicar. La mayoría de las distribuciones de Linux deberían contener algunos archivos de diccionario en el directorio /usr/share/dict. Hemos utilizado el archivo americano-inglés que se encuentra aquí para algunos de nuestros propósitos de demostración. También hemos creado un archivo de texto simple que contiene lo siguiente.

this is a sample file
it contains a collection

of lines to demonstrate
various Linux grep commands

Lo llamamos test.txt y lo he usado en muchos ejemplos de grep. Puede copiar el texto desde aquí y usar el mismo nombre de archivo para practicar. Además, también aprovechamos el archivo /etc/passwd.

Ejemplos básicos de grep

Dado que el comando grep permite a los usuarios extraer información utilizando una gran cantidad de combinaciones, los usuarios principiantes a menudo se confunden con su uso. Demostramos algunos ejemplos básicos de grep para ayudarlo a familiarizarse con esta herramienta. Te ayudará a aprender comandos más avanzados en el futuro.

1. Localizar información en un solo archivo

Uno de los usos básicos de grep en Linux es localizar líneas que contienen información específica de archivos. Simplemente ingrese el patrón seguido del nombre de archivo después de grep, como se muestra a continuación.

- -
$ grep root /etc/passwd
$ grep $USER /etc/passwd

El primer ejemplo mostrará todas las líneas que contienen root en el archivo /etc/passwd. El segundo comando mostrará todas las líneas que contienen su nombre de usuario.

2. Localizar información en varios archivos

Puede usar grep para imprimir líneas que contengan patrones específicos de más de un archivo al mismo tiempo. Simplemente proporcione todos los nombres de archivo separados por espacios en blanco después del patrón. Hemos copiado test.txt y creó otro archivo que contenía las mismas líneas pero llamado test1.txt .

$ cp test.txt test1.txt
$ grep file test.txt test1.txt

Ahora grep imprimirá todas las líneas que contengan archivos de ambos archivos.

3. Imprimir solo la parte coincidente

De forma predeterminada, grep mostrará la línea completa que contiene el patrón. Puede suprimir esta salida y decirle a grep que muestre solo la parte coincidente. Por lo tanto, grep solo generará los patrones especificados, si existen.

$ grep -o $USER /etc/passwd
$ grep --only-matching $USER /etc/passwd

Este comando generará el valor de $USER tantas veces grep lo encuentra. Si no se encuentra ninguna coincidencia, la salida estará vacía y grep terminará.

4. Ignorar coincidencia de mayúsculas y minúsculas

De forma predeterminada, grep buscará el patrón dado distinguiendo entre mayúsculas y minúsculas. A veces, el usuario puede no estar seguro del caso del patrón. Puede decirle a grep que ignore el caso del patrón en tales casos, como se demuestra a continuación.

$ grep -i $USER /etc/passwd
$ grep --ignore-case $USER /etc/passwd

$ grep -y $USER /etc/passwd

Esto devuelve una línea adicional de salida en mi terminal. También debería ser lo mismo en su máquina. El último comando está obsoleto, así que evita usarlo.

5. Invertir patrones grep coincidentes

La utilidad grep permite a los usuarios invertir la coincidencia. Significa que grep imprimirá todas las líneas que no contengan el patrón dado. Consulte el siguiente comando para obtener una vista rápida.

$ grep -v file test.txt
$ grep --invert-match file test.txt

Los comandos anteriores son equivalentes e imprimen solo aquellas líneas que no contienen el archivo.

6. Hacer coincidir solo palabras completas

La utilidad grep imprime cualquier línea que contenga el patrón. Por lo tanto, también imprimirá líneas que tengan el patrón dentro de palabras u oraciones arbitrarias. A menudo querrá descartar estos valores. Puede hacerlo fácilmente usando la opción -w, como se muestra a continuación.

$ grep hello /usr/share/dict/american-english
$ grep -w hello /usr/share/dict/american-english

Si los ejecuta uno tras otro, verá la diferencia. En mi sistema, el primer comando devuelve 5 líneas mientras que el segundo comando solo dos.

7. Cuente el número de coincidencias

A menudo, es posible que simplemente desee la cantidad de coincidencias encontradas usando algún patrón. La -c La opción es muy útil en tales situaciones. Cuando se usa, grep devuelve el número de coincidencias en lugar de imprimir las líneas. Agregamos esta bandera a los comandos anteriores para ayudarlo a visualizar cómo funciona.

$ grep -c hello /usr/share/dict/american-english
$ grep -c -w hello /usr/share/dict/american-english

Los comandos devuelven 5 y 2 respectivamente.

8. Mostrar número de línea

Puede indicarle a grep que muestre los números de línea donde se ha encontrado una coincidencia. Utiliza un índice basado en 1 donde la primera línea del archivo es la línea número 1 y la décima línea es la línea número 10. Eche un vistazo a los siguientes comandos para entender cómo funciona esto.

$ grep -n -w cat /usr/share/dict/american-english
$ grep --line-number -w cat /usr/share/dict/american-english

Los dos comandos anteriores imprimen las líneas que contienen la palabra gato en el diccionario americano-inglés.

9. Suprimir prefijos de nombre de archivo

Si vuelve a ejecutar los ejemplos del segundo comando, notará que grep antepone la salida con los nombres de archivo. A menudo, es posible que desee ignorarlos u omitirlos por completo. Los siguientes comandos grep de Linux ilustrarán esto para usted.

$ grep -h file test.txt test1.txt
$ grep --no-filename file test.txt test1.txt

Los dos comandos anteriores son equivalentes, por lo que puede elegir el que desee. Solo devolverán las líneas con el patrón coincidente, no los nombres de archivo.

10. Mostrar solo prefijos de nombre de archivo

Por otro lado, a veces es posible que solo desee los nombres de archivo que contienen algún patrón. Puede utilizar -l opción para esto. La forma larga de esta opción es –files-with-matches .

$ grep -l cat /usr/share/dict/*-english
$ grep --files-with-matches cat /usr/share/dict/*-english

Los dos comandos anteriores imprimen los nombres de archivo que contienen el patrón cat. Muestra los diccionarios inglés-americano y inglés-británico como salida de grep en mi terminal.

11. Leer archivos recursivamente

Puede decirle a grep que lea todos los archivos en un directorio recursivamente usando -r o –opción recursiva . Esto imprimirá todas las líneas que contengan la coincidencia y les prefijará los nombres de archivo donde se encontraron.

$ grep -r -w cat /usr/share/dict

Este comando generará todos los archivos que contengan la palabra gato junto con sus nombres de archivo. Estamos usando la ubicación /usr/share/dict porque ya contiene varios archivos de diccionario. El -R La opción se puede usar para permitir que grep atraviese enlaces simbólicos.

12. Mostrar coincidencias con todo el patrón

También puede indicarle a grep que muestre solo aquellas coincidencias que contengan la coincidencia exacta en toda la línea. Por ejemplo, el siguiente comando generará líneas que solo contienen la palabra cat.

$ grep -r -x cat /usr/share/dict/
$ grep -r --line-regexp cat /usr/share/dict/

Simplemente devuelven las tres líneas que contienen solo gato en mis diccionarios. Mi Ubuntu 19.10 tiene tres archivos en el directorio /dict que contienen la palabra gato en una sola línea.

Expresiones regulares en el comando grep de Linux

Una de las características más convincentes de grep es su capacidad para trabajar con expresiones regulares complejas. Solo hemos visto algunos ejemplos básicos de grep que ilustran muchas de sus opciones. Sin embargo, la capacidad de procesar archivos basados ​​en expresiones regulares es mucho más exigente. Dado que las expresiones regulares requieren un estudio técnico exhaustivo, nos limitaremos a ejemplos simples.

13. Seleccionar coincidencias al principio

Puede usar grep para especificar una coincidencia solo al comienzo de una línea. Esto se llama anclar el patrón. Tendrá que utilizar el signo de intercalación '^' operador para este fin.

$ grep "^cat" /usr/share/dict/american-english

El comando anterior imprimirá todas las líneas en el diccionario inglés-americano de Linux que comienza con cat. No usamos comillas para especificar nuestros patrones hasta esta parte de nuestra guía. Sin embargo, los usaremos ahora y le recomendamos que los use también.

14. Seleccionar coincidencias al final

De manera similar al comando anterior, también puede anclar su patrón para que coincida con las líneas que contienen el patrón al final. Consulte el siguiente comando para comprender cómo funciona esto en Linux grep.

$ grep "fish$" /usr/share/dict/american-english

Este comando imprimirá todas las líneas que terminen en pez. Observe cómo hemos usado el símbolo $ al final de nuestro patrón en este caso.

15. Coincide con un solo carácter

La utilidad grep de Unix permite a los usuarios hacer coincidir cualquier carácter individual como parte del patrón. El punto ‘.’ El operador se utiliza para este propósito. Eche un vistazo a los siguientes ejemplos para una mejor comprensión.

$ grep -x "c.t" /usr/share/dict/american-english

Este comando imprimirá todas las líneas que contengan palabras de tres caracteres que comiencen con c y terminen con t. Si omite el -x opción, la salida crecerá mucho ya que grep mostrará todas las líneas que tengan cualquier combinación de estos caracteres. Puedes usar doble .. para especificar dos caracteres aleatorios y tal.

16. Coincidencia de un conjunto de caracteres

También puede elegir entre un conjunto de caracteres fácilmente usando corchetes. Le dice a grep que seleccione caracteres según algunos criterios. Por lo general, utilizará expresiones regulares para especificar estos criterios.

$ grep "c[aeiou]t" /usr/share/dict/american-english 
$ grep -x "m[aeiou]n" /usr/share/dict/american-english

El primer ejemplo imprimirá todas las líneas en el diccionario americano-inglés que contienen el patrón c seguido de una sola vocal y el carácter t. El siguiente ejemplo imprimirá todas las palabras exactas que contengan m seguida de una vocal y luego n.

17. Coincidencia de un rango de caracteres

Los siguientes comandos demostrarán cómo puede hacer coincidir un rango de caracteres usando grep. Pruebe los comandos por su cuenta para ver cómo funcionan las cosas.

$ grep "^[A-Z]" /usr/share/dict/american-english
$ grep "[A-Z]$" /usr/share/dict/american-english

El primer ejemplo imprimirá todas las líneas que comiencen con cualquier letra mayúscula. El segundo comando muestra solo aquellas líneas que terminan con una letra mayúscula.

18. Omitir caracteres en patrones

En algún momento, es posible que desee buscar patrones que no contengan algún carácter específico. Le mostraremos cómo hacer esto usando grep en el siguiente ejemplo.

$ grep -w "[^c]at$" /usr/share/dict/american-english
$ grep -w "[^c][aeiou]t" /usr/share/dict/american-english

El primer comando muestra todas las palabras que terminan en at excepto cat. El [^c] le dice a grep que omita el carácter c de su búsqueda. El segundo ejemplo le dice a grep que muestre todas las palabras que terminan con una vocal seguida de t y no contiene c.

19. Caracteres del grupo dentro del patrón

El [] solo le permite especificar un solo conjunto de caracteres. Aunque puede usar varios conjuntos de corchetes para especificar caracteres adicionales, no es adecuado si ya sabe qué grupos de caracteres le interesan. Afortunadamente, puede usar () para agrupar varios caracteres en sus patrones.

$ grep -E "(copy)" /usr/share/dict/american-english
$ egrep "(copy)" /usr/share/dict/american-english

El primer comando genera todas las líneas que tienen la copia del grupo de caracteres en ellas. La -E se requiere bandera. Puede usar el segundo comando egrep si desea omitir este indicador. Es simplemente una interfaz extendida para grep.

20. Especificar caracteres opcionales en el patrón

La utilidad grep también permite a los usuarios especificar caracteres opcionales para sus patrones. Tendrás que usar el “?” símbolo para esto. Todo lo que preceda a ese carácter será opcional en su patrón.

$ grep -E "(commu)?nist" /usr/share/dict/american-english

Este comando imprimirá la palabra comunista junto con todas las líneas del diccionario que contengan nist. Vea cómo el -E Aquí se utiliza la opción. Permite que grep realice coincidencias de patrones más complejas o extendidas.

21. Especificar repeticiones en patrón

Puede especificar cuántas veces debe coincidir un patrón para ciertos comandos grep. Los siguientes comandos le muestran cómo seleccionar el número de caracteres de una clase para patrones grep.

$ grep -E "[aeiou]{3}" /usr/share/dict/american-english
$ grep -E "c[aeiou]{2}t" /usr/share/dict/american-english

El primer ejemplo imprimirá todas las líneas que contengan tres vocales mientras que, por otro lado, el último ejemplo imprimirá todas las líneas que contengan c seguidas de 2 vocales y luego t.

22. Especifique una o más repeticiones

También puede utilizar el “+” operador incluido en el conjunto de características extendidas de grep para especificar una coincidencia una o más veces. Consulte los siguientes comandos para ver cómo funciona esto en el comando grep de Linux.

$ egrep -c "[aeiou]+" /usr/share/dict/american-english
$ egrep -c "[aeiou]{3}" /usr/share/dict/american-english

El primer comando imprime el número de veces que grep encuentra una o más vocales consecutivas. Y el segundo comando muestra cuántas líneas contienen tres vocales consecutivas. Debería haber un gran margen de diferencia.

23. Especificar límite inferior para repeticiones

Puede seleccionar tanto el límite superior como el límite inferior para el número de repeticiones de coincidencias. Los siguientes ejemplos demuestran cómo seleccionar límites inferiores en acción.

$ egrep "[aeiou]{3,}" /usr/share/dict/american-english

Hemos usado egrep en lugar de grep -E para el comando anterior. Selecciona todas las líneas que contienen 3 o más vocales consecutivas.

24. Especificar límite superior para repeticiones

Al igual que con los límites inferiores, también puede decirle a grep cuántas veces debe coincidir con ciertos caracteres como máximo. El siguiente ejemplo coincide con todas las líneas del diccionario americano-inglés que contiene hasta 3 vocales.

$ egrep "[aeiou]{,3}" /usr/share/dict/american-english

Recomendamos a los usuarios que usen egrep para estas funcionalidades extendidas, ya que es un poco más rápido y más convencional hoy en día. Observe la ubicación de la coma ‘,’ símbolo en los dos comandos mencionados.

25. Especificar límite superior e inferior

La utilidad grep también permite a los usuarios seleccionar el límite superior y el límite inferior para las repeticiones de coincidencias al mismo tiempo. El siguiente comando le dice a grep que coincida con todas las palabras que contengan un mínimo de dos y un máximo de cuatro vocales consecutivas.

$ egrep "[aeiou]{2,4}" /usr/share/dict/american-english

De esta forma, puede especificar los límites superior e inferior al mismo tiempo.

26. Seleccionar todos los personajes

Puede usar el carácter comodín '*' para seleccionar cero o más ocurrencias de una clase de carácter en sus patrones grep. Consulte el siguiente ejemplo para comprender cómo funciona.

$ egrep "collect*" test.txt 
$ egrep "c[aeiou]*t /usr/share/dict/american-english

El primer ejemplo imprime la colección de palabras, ya que es la única palabra que coincide con "recolectar" una o más veces en el test.txt expediente. El último ejemplo coincide con todas las líneas que contienen c seguida de cualquier número de vocales, luego t en el diccionario inglés-americano de Linux.

27. Expresiones regulares alternativas

La utilidad grep permite a los usuarios especificar patrones alternos. Puede usar el “|” carácter para instruir a grep para seleccionar uno de dos patrones. Este carácter se conoce como operador infijo en la terminología POSIX. Eche un vistazo al siguiente ejemplo para comprender su efecto.

$ egrep "[AEIOU]{2}|[aeiou]{2}" /usr/share/dict/american-english

Este comando le dice a grep que haga coincidir todas las líneas que contienen 2 vocales mayúsculas o minúsculas consecutivas.

28. Seleccionar patrón para caracteres alfanuméricos coincidentes

Los patrones alfanuméricos contienen dígitos y letras. Los siguientes ejemplos muestran cómo seleccionar todas las líneas que contienen caracteres alfanuméricos mediante el comando grep.

$ egrep "[0-9A-Za-z]{3}" /usr/share/dict/american-english
$ egrep "[[:alnum:]]{3}" /usr/share/dict/american-english

Los dos comandos anteriores hacen lo mismo. Le estamos diciendo a grep que haga coincidir todas las líneas que contengan tres combinaciones de caracteres consecutivos de 0-9, A-Z y a-z. Sin embargo, el segundo ejemplo nos evita escribir nosotros mismos el especificador del patrón. Esto se llama una expresión especial y grep ofrece varias de ellas.

29. Caracteres especiales de escape

Hasta ahora hemos usado muchos caracteres especiales como “$”, “^” y “|” para definir expresiones regulares extendidas. Pero, ¿qué sucede si necesita hacer coincidir cualquiera de esos caracteres dentro de su patrón? Afortunadamente, los desarrolladores de grep ya han pensado en eso y permiten escapar estos caracteres especiales usando la barra invertida “\” .

$ egrep "\-" /etc/passwd

El comando anterior coincide con todas las líneas de /etc/passwd archivo contra el guión “-“ carácter y los imprime. Puede escapar cualquier otro carácter especial usando una barra invertida de esta manera.

30. Repetir patrones grep

Ya has usado el “*” comodín para seleccionar cadenas de caracteres en sus patrones. El siguiente comando le muestra cómo imprimir todas las líneas que comienzan con paréntesis y solo contienen letras y espacios en blanco. Usaremos "*" para hacer esto.

$ egrep "([A-Za-z ]*)" test.txt

Ahora agregue algunas líneas entre paréntesis dentro de su archivo de demostración test.txt y ejecuta este comando. Ya debería dominar este comando.

Comandos grep de Linux en la informática cotidiana

Una de las mejores cosas de grep es su aplicabilidad universal. Puede usar este comando para filtrar información esencial al ejecutar comandos importantes de terminal de Linux. Aunque la siguiente sección le proporciona un vistazo rápido a algunos de ellos, puede aplicar los principios básicos en cualquier lugar.

31. Mostrar todos los subdirectorios

El siguiente comando ilustra cómo podemos usar grep para hacer coincidir todas las carpetas dentro de un directorio. Usamos el comando ls -l para mostrar el contenido del directorio en la salida estándar y cortamos las líneas coincidentes con grep.

$ ls -l ~ | grep "drw"

Dado que todos los directorios en Linux contienen el patrón drw al principio, estamos usando esto como nuestro patrón para grep.

32. Mostrar todos los archivos Mp3

El siguiente comando demuestra cómo usar grep para ubicar archivos mp3 en su máquina Linux. Usaremos el comando ls nuevamente aquí.

$ ls /path/to/music/dir/ | grep ".mp3"

Primero, ls imprimirá el contenido de su directorio de música en la salida y luego grep hará coincidir todas las líneas que contienen .mp3 en ellas. No verá la salida de ls ya que hemos canalizado estos datos a grep directamente.

33. Buscar texto en archivos

También puede utilizar grep para buscar patrones de texto específicos en un solo archivo o colección de archivos. Suponga que desea ubicar todos los archivos de programa C que contienen el texto principal en ellos. No te preocupes por esto, siempre puedes buscarlo.

$ grep -l 'main' /path/to/files/*.c

De forma predeterminada, grep debe codificar con colores la parte de la coincidencia para ayudarlo a visualizar fácilmente sus hallazgos. Sin embargo, si no lo hace en su máquina Linux, intente agregar el –color opción a su comando.

34. Buscar hosts de red

El archivo /etc/hosts contiene información como la IP y el nombre del host. Puede usar grep para encontrar información específica de esta entrada usando el siguiente comando.

$ grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/hosts

No se alarme si no obtiene el patrón de inmediato. Si lo desglosas uno por uno, es muy fácil de entender. En realidad, este patrón busca todas las coincidencias en el rango 0.0.0.0 y 999.999.999.999. También puede buscar usando nombres de host.

35. Buscar paquetes instalados

Linux se encuentra encima de varias bibliotecas y paquetes. La herramienta de línea de comandos dpkg permite a los administradores controlar paquetes en distribuciones de Linux basadas en Debian, como Ubuntu. Verá a continuación cómo usamos grep para filtrar información esencial sobre un paquete usando dpkg.

$ dpkg --list | grep "chrome"

Muestra información útil en mi máquina, incluido el número de versión, la arquitectura y la descripción del navegador Google Chrome. Puede usarlo para buscar información de paquetes instalados en su sistema de manera similar.

36. Buscar imágenes de Linux disponibles

Estamos usando la utilidad grep una vez más con el comando dpkg para encontrar todas las imágenes de Linux disponibles. La salida de este comando variará ampliamente entre sistemas.

$ dpkg --list | grep linux-image

Este comando simplemente imprime el resultado de dpkg –list y lo envía a grep. Luego hace coincidir todas las líneas para el patrón dado.

37. Buscar información de modelo para CPU

El siguiente comando demuestra cómo ubicar la información del modelo de CPU en sistemas basados ​​en Linux usando el comando grep.

$ cat /proc/cpuinfo | grep -i 'model'
$ grep -i "model" /proc/cpuinfo

En el primer ejemplo, canalizamos la salida de cat /proc/cpuinfo a grep y combinamos todas las líneas que contienen la palabra modelo. Sin embargo, desde /proc/cpuinfo es en sí mismo un archivo, puede usar grep directamente en él como se muestra en el último ejemplo.

38. Buscar información de registro

Linux guarda todo tipo de registros en el directorio /var para nosotros, los administradores del sistema. Puede obtener fácilmente información útil de estos archivos de registro. El siguiente comando demuestra un ejemplo simple.

$ grep -i "cron" /var/log/auth.log

Este comando inspeccionará el archivo /var/log/auth.log en busca de líneas potenciales que contengan información sobre trabajos CRON de Linux. El -i bandera nos permite ser más flexibles. Ejecutar este comando muestra todas las líneas con la palabra CRON en el archivo auth.log.

39. Buscar información del proceso

El siguiente comando demostrará cómo podemos localizar información útil para los procesos del sistema usando grep. Un proceso es la instancia en ejecución de un programa en máquinas Linux.

$ ps auxww | grep 'guake'

Este comando imprimirá toda la información relacionada con el guake paquete. Prueba con algún otro paquete si guake no está disponible en su máquina.

40. Seleccionar solo direcciones IP válidas

Anteriormente, usamos una expresión regular relativamente más simple para hacer coincidir las direcciones IP de /etc/hosts expediente. Sin embargo, ese comando también coincidiría con muchas direcciones IP no válidas, ya que las direcciones IP válidas solo pueden tomar los valores del rango (1-255) en cada uno de sus cuatro cuadrantes.

$ egrep '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' /etc/hosts

El comando anterior no imprimirá ninguna dirección IP no válida como 999.999.999.999.

41. Buscar dentro de archivos comprimidos

El front-end zgrep del comando grep de Linux nos permite buscar patrones directamente en archivos comprimidos. Eche un vistazo rápido a los siguientes fragmentos de código para una mejor comprensión.

$ gzip test.txt
$ zgrep -i "sample" test.txt.gz

Primero, estamos comprimiendo el test.txt archivo usando gzip y luego usando zgrep para buscar la palabra muestra.

42. Contar el número de líneas vacías

Puede contar fácilmente el número de líneas vacías en un archivo usando grep, como se muestra en el siguiente ejemplo.

$ grep -c "^$" test.txt

Desde test.txt contiene solo una línea vacía, este comando devuelve 1. Las líneas vacías se comparan usando la expresión regular “^$” y su conteo se imprime aprovechando la -c opción.

43. Encuentra varios patrones

Hasta ahora, nos hemos centrado en encontrar un patrón único. La utilidad grep también permite a los usuarios buscar líneas con múltiples patrones al mismo tiempo. Eche un vistazo a los comandos de ejemplo a continuación para ver cómo funciona.

$ grep -e 'sample' -e 'file' test.txt
$ grep -e 'sample' test.txt | grep -e 'file'
$ grep -e 'sample\| file' test.txt

Todos los comandos anteriores imprimirán las líneas que contienen tanto "muestra" como "archivo".

44. Hacer coincidir direcciones de correo electrónico válidas

A muchos programadores experimentados les gusta validar la entrada del usuario ellos mismos. Afortunadamente, es muy fácil validar datos de entrada como IP y correos electrónicos usando expresiones regulares grep. El siguiente comando coincidirá con todas las direcciones de correo electrónico válidas.

$ grep -E -o "\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" /path/to/data

Este comando es extremadamente eficiente y coincide fácilmente con hasta el 99% de las direcciones de correo electrónico válidas. Puede usar egrep para acelerar el proceso.

Comandos grep varios

La utilidad grep ofrece muchas más combinaciones de comandos útiles que permiten más operaciones en los datos. Estamos discutiendo algunos comandos que rara vez se usan pero que son esenciales en esta sección.

45. Seleccionar patrones de archivos

Puede seleccionar sus patrones de expresiones regulares para grep de archivos predefinidos con bastante facilidad. Usa la -f opción para esto.

$ echo "sample"> file
$ grep -f file test.txt

Estamos creando un archivo de entrada que contiene un patrón usando el comando echo. El segundo comando demuestra la entrada de archivos para grep.

46. Contextos de control

Puede controlar fácilmente el contexto de salida de grep usando las opciones -A , -B y -C . Los siguientes comandos los muestran en acción.

$ grep -A2 'file' test.txt
$ grep -B2 'file' test.txt
$ grep -C3 'Linux' test.txt

El primer ejemplo muestra las siguientes 2 líneas después de la coincidencia, el segundo ejemplo muestra las 2 anteriores y el último ejemplo muestra ambas.

47. Suprimir mensajes de error

La -s La opción permite a los usuarios suprimir los mensajes de error predeterminados que muestra grep en caso de archivos inexistentes o ilegibles.

$ grep -s 'file' testing.txt
$ grep −−no-messages 'file' testing.txt

Aunque no hay ningún archivo llamado testing.txt en mi directorio de trabajo, grep no emite ningún mensaje de error para este comando.

48. Mostrar información de la versión

La utilidad grep es mucho más antigua que el propio Linux y se remonta a los primeros días de Unix. Use el siguiente comando si desea obtener la información de la versión de grep.

$ grep -V
$ grep --version

49. Mostrar página de ayuda

La página de ayuda de grep contiene una lista resumida de todas las funciones disponibles. Ayuda a superar muchos problemas directamente desde la terminal.

$ grep --help

Este comando invocará la página de ayuda para grep.

50. Consultar Documentación

La documentación de grep es extremadamente detallada y proporciona una introducción completa a las funciones disponibles y al uso de expresiones regulares. Puede consultar la página del manual para grep usando el siguiente comando.

$ man grep

Pensamientos finales

Dado que puede crear cualquier combinación de comandos utilizando las sólidas opciones de CLI de grep, es difícil encapsular todo sobre el comando grep en una sola guía. Sin embargo, nuestros editores han hecho todo lo posible para resumir casi todos los ejemplos prácticos de grep para ayudarlo a familiarizarse mucho mejor con él. Le sugerimos que practique tantos de estos comandos como sea posible y encuentre formas de incorporar grep en su procesamiento diario de archivos. Aunque es posible que enfrente nuevos obstáculos cada día, esta es la única forma de dominar realmente el comando grep de Linux.


Linux
  1. 10 tutoriales de comandos de Linux para principiantes y expertos

  2. Comando wc de Linux explicado para principiantes (6 ejemplos)

  3. 8 ejemplos prácticos del comando Linux Xargs para principiantes

  4. 10 ejemplos prácticos de comandos Grep para desarrolladores

  5. Comando grep de Linux

Comando ls en Linux para listar archivos

40 Ejemplo Práctico y Productivo de Comandos Linux df

40 Comando awk práctico y útil en Linux y BSD

25 Comando mv práctico en Linux para usuarios cotidianos

16 Ejemplos Prácticos y Útiles del Comando Echo en Linux

Comandos prácticos de Linux y Unix Tee para el administrador de Linux