Grep es una utilidad de línea de comandos en los sistemas Linux y Unix que se usa para imprimir líneas de un archivo después de hacer coincidir las cadenas o la palabra. grep significa impresión de expresión regular global, se puede usar para buscar cadenas de uno o más archivos según el patrón. Un patrón puede ser un solo carácter, un grupo de caracteres, una sola palabra o una oración.
Cuando ejecutamos el comando grep con la cadena especificada, si coincide, mostrará la línea del archivo que contiene la cadena sin modificar el contenido del archivo existente.
Sintaxis del comando Grep:
$ grep
En este tutorial, discutiremos 14 ejemplos útiles de comandos grep de Linux, sumerjámonos en los ejemplos.
Ejemplo 1) Buscar el patrón o la palabra en un archivo
Cuando ejecutamos el comando grep seguido de la cadena de búsqueda o el patrón, imprimirá la línea coincidente de un archivo. El ejemplo se muestra a continuación.
Busque la palabra «linuxtechi» en el archivo /etc/passwd file,
[email protected]:~# grep linuxtechi /etc/passwd linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash [email protected]:~#
Ejemplo 2) Buscar el patrón en los múltiples archivos
Para buscar la palabra ‘linuxtechi’ en varios archivos como /etc/passwd, /etc/shadow y /etc/gshadow, ejecute
[email protected]:~# grep linuxtechi /etc/passwd /etc/shadow /etc/gshadow /etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash /etc/shadow:linuxtechi:$6$DdgXjxlM$4flz4JRvefvKp0DG6re:16550:0:99999:7::: /etc/gshadow:adm:*::syslog,linuxtechi /etc/gshadow:cdrom:*::linuxtechi /etc/gshadow:sudo:*::linuxtechi /etc/gshadow:dip:*::linuxtechi /etc/gshadow:plugdev:*::linuxtechi /etc/gshadow:lpadmin:!::linuxtechi /etc/gshadow:linuxtechi:!:: /etc/gshadow:sambashare:!::linuxtechi [email protected]:~#
Ejemplo 3) Enumere el nombre de los archivos que contienen word (grep -l)
Supongamos que queremos enumerar los archivos que contienen la palabra ‘linuxtechi’ de varios archivos, para hacerlo use la opción ‘-l’ en el comando grep seguido de la palabra (patrón) y los archivos.
[email protected]:~# grep -l linuxtechi /etc/passwd /etc/shadow /etc/fstab /etc/mtab /etc/passwd /etc/shadow [email protected]:~#
Ejemplo 4) Busque el patrón en el archivo junto con el número de línea asociado (grep -n)
Supongamos que queremos una línea de lista y su número que coincida con el patrón o la palabra. Use la opción ‘-n’ en el comando grep, en nuestro patrón de ejemplo es ‘linuxtechi’
[email protected]:~# grep -n linuxtechi /etc/passwd 39:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash [email protected]:~#
A continuación se muestra otro ejemplo que muestra la línea y su número después de hacer coincidir una palabra ‘raíz’ en el archivo /etc/passwd y /etc/shadow
[email protected]:~# grep -n root /etc/passwd /etc/shadow
Ejemplo 5) Imprime las líneas excluyendo el patrón (grep -v)
Enumere todas las líneas del archivo /etc/passwd que no contengan la palabra específica “linuxtechi”.
[email protected]:~# grep -v linuxtechi /etc/passwd
Ejemplo 6) Buscar todas las líneas que comienzan con un patrón específico (grep ^)
Bash Shell trata el símbolo de intercalación (^) como un carácter especial que marca el comienzo de una línea o una palabra. Vamos a mostrar las líneas que comienzan con la palabra «raíz» en el archivo /etc/passwd, ejecute debajo del comando grep
[email protected]:~# grep ^root /etc/passwd root:x:0:0:root:/root:/bin/bash [email protected]:~#
Ejemplo 7) Buscar todas las líneas que terminen con una palabra específica (grep $)
Bash Shell trata el símbolo del dólar ‘$’ como un carácter especial que marca los finales de línea o palabra. Enumere todas las líneas de /etc/passwd que terminan con «intento» palabra.
[email protected]:~# grep bash$ /etc/passwd root:x:0:0:root:/root:/bin/bash linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash [email protected]:~#
Ejemplo 8) Buscar palabra o patrón recursivamente (grep -r)
Cuando ejecutamos el comando grep sin mencionar los nombres de los archivos, mostrará las líneas de todos los archivos que contienen la cadena coincidente. Hará la búsqueda recursivamente en el directorio de trabajo actual.
Para buscar una palabra recursivamente en todos los archivos de una carpeta, use la opción ‘-r’ en el comando grep, el ejemplo se muestra a continuación:
[email protected]:~# grep -r linuxtechi /etc/ /etc/subuid:linuxtechi:100000:65536 /etc/group:adm:x:4:syslog,linuxtechi /etc/group:cdrom:x:24:linuxtechi /etc/group:sudo:x:27:linuxtechi /etc/group:dip:x:30:linuxtechi /etc/group:plugdev:x:46:linuxtechi /etc/group:lpadmin:x:115:linuxtechi /etc/group:linuxtechi:x:1000: /etc/group:sambashare:x:131:linuxtechi /etc/passwd-:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash /etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash ............................................................................
El comando anterior buscará la palabra ‘linuxtechi’ en el directorio «/etc» de forma recursiva.
Ejemplo 9) Buscar todas las líneas vacías o en blanco de un archivo (grep ^$)
Para buscar y enumerar todas las líneas vacías o en blanco de un archivo, use la combinación de caracteres especiales ‘^$’ en el comando grep, el ejemplo se muestra a continuación:
[email protected]:~# grep ^$ /etc/shadow [email protected]:~#
Como no hay una línea vacía en el archivo /etc/shadow, no se muestra nada.
Ejemplo 10) Ignorar mayúsculas y minúsculas durante la búsqueda (grep -i)
La opción -i en el comando grep ignora las mayúsculas y minúsculas, es decir, no discriminará mayúsculas o minúsculas durante la búsqueda.
Tomemos un ejemplo, quiero buscar la palabra «LinuxTechi» en el archivo passwd.
[email protected]:~$ grep -i LinuxTechi /etc/passwd linuxtechi:x:1001:1001::/home/linuxtechi:/bin/bash [email protected]:~$
Nota : El comando Grep permite la búsqueda basada en la palabra exacta usando la opción ‘-w’, el ejemplo se muestra a continuación,
[email protected]:~$ grep -w cook /mnt/my_dish.txt
El comando anterior buscará y buscará las líneas que tienen la palabra «cocinar». No dará resultados que tiene cocción.
Ejemplo 11) Buscar múltiples patrones o palabras (grep -e)
Por ejemplo, quiero buscar la palabra ‘linuxtechi’ y ‘raíz’ en un solo comando grep, luego use la opción -e en el comando grep seguido del patrón de búsqueda
[email protected]:~# grep -e "linuxtechi" -e "root" /etc/passwd root:x:0:0:root:/root:/bin/bash linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash [email protected]:~# or [email protected]:~# grep -E "linuxtechi|root" /etc/passwd
Ejemplo 12) Obtener patrón de búsqueda de un archivo (grep -f)
Use la opción ‘-f’ en el comando grep para obtener el patrón de búsqueda de un archivo. El ejemplo se demuestra a continuación:
Primero cree un archivo de patrón de búsqueda «grep_pattern» en su directorio de trabajo actual. En mi caso, he puesto los siguientes contenidos.
[email protected]:~# cat grep_pattern ^linuxtechi root false$ [email protected]:~#
Ahora intente buscar usando el archivo grep_pattern.
[email protected]:~# grep -f grep_pattern /etc/passwd
Ejemplo 13) Cuente el número de líneas que coinciden con el patrón de búsqueda (grep -c)
Si desea contar el número de líneas que coinciden con el patrón de búsqueda, utilice la opción ‘-c’ en el comando grep.
Consideremos el ejemplo anterior y contemos las líneas que coinciden con el patrón de búsqueda,
[email protected]:~# grep -c -f grep_pattern /etc/passwd 22 [email protected]:~#
Ejemplo 14) Mostrar N número de líneas antes y después de la coincidencia de patrones (grep -B -A)
a) Muestre cuatro líneas antes de la coincidencia de patrones, use la opción -B en el comando grep, el ejemplo se muestra a continuación:
[email protected]:~# grep -B 4 "games" /etc/passwd
b) Mostrar cuatro líneas después de la coincidencia de patrones, use la opción -A en el comando grep
[email protected]:~# grep -A 4 "games" /etc/passwd
c) Mostrar cuatro líneas alrededor de la coincidencia de patrones usando la opción -C
[email protected]:~# grep -C 4 "games" /etc/passwd
Eso es todo del artículo, espero que estos ejemplos lo ayuden a usar el comando grep de manera más eficiente. Comparta sus comentarios y comentarios en la sección de comentarios a continuación.
Leer también: 10 ejemplos de comandos ‘rm’ para principiantes de Linux