50 comando grep productivo y práctico 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 / py fue creado por el legendario Ken Thompson. Si es un usuario experimentado de Linux, sabrá la importancia de las expresiones regulares en . Sin embargo, muchos usuarios principiantes simplemente no tienen ni idea de ellos. A menudo vemos que los usuarios se sienten incómodos con este tipo de técnicas. Sin embargo, la mayoría de los comandos grep no son tan complejos. Puede dominar grep fácilmente 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 puede usarlo con todo tipo de cosas. Puede grep de patrones directamente en archivos o desde su salida estándar. Permite a los usuarios canalizar la salida de otro comando a grep y localizar información específica. Los siguientes comandos describirán 50 de esos comandos.

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

Dado que la utilidad grep de Linux funciona con archivos, hemos descrito algunos archivos que puede utilizar 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 de inglés americano 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 hemos usado para muchos ejemplos de grep. Puede copiar el texto desde aquí y usar el mismo nombre de archivo para practicar. Además, también hemos aprovechado el archivo / etc / passwd .

introducción al comando grep de linux

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. Le ayudará a aprender comandos más avanzados en el futuro.

1. Busque 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 del 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 esas líneas que contienen su nombre de usuario.

2. Localizar información en varios archivos

Puede usar grep para imprimir líneas que contienen 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 hemos creado otro archivo que contiene 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 contienen 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 existe.

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

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

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

De forma predeterminada, grep buscará el patrón dado de manera sensible a mayúsculas y minúsculas. A veces, es posible que el usuario no esté seguro del caso del patrón. Puede decirle a grep que ignore el caso del patrón en tales casos, como se muestra 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 el mismo en su máquina. El último comando está obsoleto, así que evite usar ese.

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. Coincidir solo con 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 hacer esto 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.

coincidir con palabras completas

7. Cuente el número de coincidencias

A menudo, es posible que desee simplemente la cantidad de coincidencias encontradas usando algún patrón. La opción -c es muy útil en tales situaciones. Cuando se usa, grep devuelve el número de coincidencias en lugar de imprimir las líneas. Hemos agregado 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 comprender 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 inglés-americano.

9. Suprimir prefijos de nombre de archivo

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

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

Ambos 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 usar la opción -l para esto. La forma larga de esta opción es –archivos-con-coincidencias .

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

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

11. Leer archivos de forma recursiva

Se puede decir grep para leer todos los archivos en un directorio de forma recursiva utilizando el -r o la opción -recursive . Esto imprimirá todas las líneas que contienen la coincidencia y las colocará como prefijo con 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 ya que ya contiene varios archivos de diccionario. La opción -R se puede utilizar para permitir que grep atraviese enlaces simbólicos.

12. Mostrar coincidencias con el patrón completo

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

$ 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 cat en una sola línea.

Expresiones regulares en el comando grep de Linux

Una de las características más atractivas 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 quedaremos con ejemplos simples.

13. Seleccionar coincidencias al principio

Puede usar grep para especificar una coincidencia solo al comienzo de una línea. A esto se le llama anclar el patrón. Deberá utilizar el operador de intercalación ‘^’ para este propósito.

$ 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 terminan en pez. Observe cómo hemos usado el símbolo $ al final de nuestro patrón en este caso.

partido al final

15. Coincidir con un solo personaje

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

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

Este comando imprimirá todas las líneas que contienen palabras de tres caracteres que comienzan con cy terminan con t. Si omite la opción -x , la salida crecerá mucho ya que grep mostrará todas las líneas que tengan cualquier combinación de estos caracteres. Puede utilizar double .. para especificar dos caracteres aleatorios y demás.

16. Emparejar de un conjunto de personajes

También puede elegir entre un conjunto de caracteres fácilmente utilizando corchetes. Le dice a grep que seleccione caracteres según algunos criterios. Por lo general, usará 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 del diccionario inglés-americano 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 contienen m seguida de una vocal y luego n.

17. Combina entre una variedad de personajes

Los siguientes comandos demostrarán cómo puede hacer coincidir entre 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] dice grep para omitir 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 contienen c.

19. Agrupar caracteres dentro del patrón

El [] solo le permite especificar un único juego de caracteres. Aunque puede utilizar varios conjuntos de corchetes para especificar caracteres adicionales, no es adecuado si ya sabe en qué grupos de caracteres está interesado. Afortunadamente, puede utilizar () 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. Se requiere la bandera -E . Puede usar el segundo comando egrep si desea omitir este indicador. Es simplemente un front-end extendido 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. Necesitarás 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 a todas las líneas del diccionario que contengan nist. Vea cómo se usa la opción -E aquí. Permite a grep realizar coincidencias de patrones más complejas o extendidas.

coincidencia opcional usando grep

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 imprime todas las líneas que contienen tres vocales mientras que, por otro lado, el último ejemplo imprime todas las líneas que contienen c seguida de 2 vocales y luego t.

22. Especifique una o más repeticiones

También puede utilizar el operador “+” incluido en el conjunto de funciones 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 partidos. Los siguientes ejemplos demuestran cómo seleccionar límites inferiores en acción.

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

Hemos utilizado 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 inglés-americano que contiene hasta 3 vocales.

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

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

25. Especificar límite superior e inferior

La utilidad grep también permite a los usuarios seleccionar tanto el límite superior como el límite inferior para las repeticiones de coincidencias al mismo tiempo. El siguiente comando le dice a grep que haga coincidir 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 caracteres

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 ‘recopilar’ una o más veces en el archivo test.txt . 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 utilizar el “|” carácter para indicarle a grep que seleccione uno de dos patrones. Este carácter se conoce como el 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 coincida con todas las líneas que contengan 2 vocales mayúsculas consecutivas o vocales pequeñas.

28. Seleccione el patrón para los caracteres alfanuméricos coincidentes

Los patrones alfanuméricos contienen tanto dígitos como letras. Los siguientes ejemplos demuestran 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

Ambos comandos anteriores hacen lo mismo. Le estamos diciendo a grep que coincida con todas las líneas que contengan tres combinaciones de caracteres consecutivos de 0-9, AZ y az. Sin embargo, el segundo ejemplo nos evita escribir el especificador de patrones nosotros mismos. Esto se denomina expresión especial y grep ofrece varias de ellas.

expresión alfanumérica en el comando grep

29. Caracteres especiales de escape

Hasta ahora, hemos utilizado 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? Por suerte, 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 hace coincidir todas las líneas del archivo / etc / passwd con el carácter de guión “-“ y las imprime. Puede escapar de cualquier otro carácter especial usando una barra invertida de esta manera.

30. Repetir patrones grep

Ya usó 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 ejecute 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 utilizar este comando para filtrar información esencial al ejecutar . 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. Estamos usando el comando ls -l para mostrar el contenido del directorio en la salida estándar y cortando las líneas coincidentes con grep.

$ ls -l ~ | grep "drw"

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

32. Mostrar todos los archivos MP3

El siguiente comando demuestra cómo usar grep para localizar 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 coincidirá con todas las líneas que contengan .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 se preocupe por esto, siempre puede hacerlo.

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

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

34. Buscar hosts de red

El archivo / etc / hosts contiene información como la IP del host 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 capta el patrón de inmediato. Si lo desglosa 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 utilizando nombres de host.

35. Encuentre paquetes instalados

Linux se encuentra en la parte superior de varias bibliotecas y paquetes. La herramienta de línea de comandos dpkg permite a los administradores controlar paquetes en distribuciones de basadas en . A continuación, verá cómo usamos grep para filtrar información esencial sobre un paquete que usa 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.

paquetes e imágenes

36. Encuentre 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. El resultado 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, hemos canalizado la salida de cat / proc / cpuinfo a grep y hemos hecho coincidir todas las líneas que contienen la palabra modelo. Sin embargo, dado que / 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 los administradores del sistema. Puede extraer fácilmente información útil de estos archivos de registro. El siguiente comando demuestra un ejemplo sencillo.

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

Este comando inspeccionará el archivo /var/log/auth.log en busca de posibles líneas que contengan información sobre . La bandera -i nos permite ser más flexibles. Al ejecutar este comando, se muestran todas las líneas con la palabra CRON en el archivo auth.log.

39. Encuentre información sobre el 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 paquete guake . Pruebe con algún otro paquete si guake no está disponible en su máquina.

40. Seleccione solo direcciones IP válidas

Anteriormente, usamos una expresión regular relativamente más simple para hacer coincidir las direcciones IP del archivo / etc / hosts . 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 comprenderlo mejor.

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

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

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

Dado que 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 recuento se imprime aprovechando la opción -c .

43. Encuentra múltiples 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 siguientes comandos de ejemplo 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 combina fácilmente hasta un 99% de direcciones de correo electrónico válidas. Puede utilizar egrep para acelerar el proceso.

múltiples patrones

Comandos grep varios

La utilidad grep ofrece muchas más combinaciones de comandos útiles que permiten realizar más operaciones con los datos. En esta sección, discutimos algunos comandos que rara vez se usan pero que son esenciales.

45. Seleccionar patrones de archivos

Puede seleccionar sus patrones de expresión regular para grep a partir de archivos predefinidos con bastante facilidad. Utilice la opción -f 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 opción -s 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 un 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 versión

La utilidad grep es mucho más antigua que el propio Linux y se remonta a . Utilice 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 características disponibles y el uso de expresiones regulares. Puede consultar la página de manual de grep usando el siguiente comando.

$ man grep

Pensamientos finales

Dado que puede crear cualquier combinación de comandos utilizando las robustas opciones de la 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 delinear 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 puede enfrentarse a nuevos obstáculos cada día, esta es la única forma de dominar realmente el comando grep de Linux.

Leave a Comment

Your email address will not be published. Required fields are marked *