Tutoriales

Encuentre texto en un archivo usando el comando grep de Linux

La búsqueda de patrones de texto en un archivo o flujo de texto es una de las tareas más comunes que realizará en su carrera como administrador de sistemas. Esta es una habilidad invaluable que le permite examinar varias configuraciones del sistema, analizar datos, solucionar problemas de registros y realizar muchas otras actividades.

La forma más común de encontrar texto en un sistema Linux es usar una utilidad de línea de comandos grepEsta utilidad se desarrolló originalmente para el sistema operativo Unix a principios de la década de 1970. Grep ha evolucionado a lo largo de los años y, en la actualidad, la versión más común disponible para Linux, GNU grep, tiene características adicionales, como la salida en color. Sin embargo, su función principal sigue siendo la misma.

usar greppuede encontrar rápidamente texto que coincida con una expresión regular en un solo archivo, un grupo de archivos o texto de stdin Utilice el operador de carcasa y tubos.

Este artículo describe cómo usar grep Comando para buscar texto.

Buscar texto en un archivo

El método de uso más básico. grep Búsqueda de texto en un solo archivo.Para hacer esto, escriba grep Seguido por el patrón de texto a buscar y el nombre de archivo a buscar.Por ejemplo, para encontrar los puertos utilizados por el demonio Secure Shell (SSH), busque Port en el archivo /etc/ssh/sshd_config:

$ grep Port /etc/ssh/sshd_config
Port 22
#GatewayPorts no

precaución grep Encuentra todas las líneas que coinciden con un patrón de texto, sin importar dónde se encuentre el patrón.

LEER  ¿Qué es POSIX? ¿Por qué es importante para los usuarios de Linux/UNIX?

[ Download the Linux grep command cheat sheet. ]

Extender grep con expresiones regulares

En el ejemplo anterior, cuando buscas Port En el archivo de configuración de SSH, grep Devuelve dos filas. la línea que buscas, puerto 22y una línea adicional que contiene el patrón de búsqueda. En algunos casos, esto es exactamente lo que quieres. En otros casos, grep Es posible que haya demasiadas entradas que no sean de su interés, por lo que tendrá que ordenarlas para encontrar la información que busca.

Para evitar esto, puede usar expresiones regulares para ser más específico sobre lo que está buscando.Por ejemplo, busque solo líneas que comiencen con una palabra PortSe pueden utilizar operadores de expresiones regulares ^como esto:

$ grep ^Port /etc/ssh/sshd_config
Port 22

esta vez grep devuelve solo líneas que comienzan con Port Porque, en la segunda línea, la expresión Port en el medio.

también puedes usar expandido Expresión regular con argumentos de línea de comando -EPor ejemplo, para buscar patrones que contengan palabras Port seguido de un número, utilice esta expresión regular:

$ grep -E "Port [1-9]+" /etc/ssh/sshd_config
Port 22

También puedes usar $ operador.Por ejemplo, busque todos los none existir sshd_configusando grep como esto:

$ grep none$ /etc/ssh/sshd_config
#RekeyLimit default none
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#ChrootDirectory none
#VersionAddendum none
#Banner none

Las expresiones regulares son una parte importante grep, haciéndolo potente y flexible. Sin embargo, las expresiones regulares son un tema enorme.Para obtener información adicional, consulte Expresiones regulares en Wikipedia o Expresiones Regulares 101.

Encuentra texto en múltiples archivos y directorios

Similar a encontrar patrones de texto en un solo archivo, puede usar grep Encuentra texto en múltiples archivos o directorios.Para buscar texto en varios archivos al mismo tiempo, especifique el archivo para buscar después del primer nombre de archivo o use un comodín de shell, p. * para todos los archivos. Por ejemplo, para buscar la configuración en dos archivos:

$ grep Port /etc/ssh/sshd_config /etc/ssh/ssh_config
/etc/ssh/sshd_config:Port 22
/etc/ssh/sshd_config:#GatewayPorts no
/etc/ssh/ssh_config:#   Port 22

Cuando utiliza varios archivos, grep Muestra el nombre del archivo donde se encontró la coincidencia antes de mostrar la línea correspondiente.

[ Keep your most commonly used commands handy with the Linux commands cheat sheet. ]

Para ejecutar la búsqueda recursivamente en múltiples subdirectorios, use el indicador de línea de comando -R:

$ grep -R ^Port /etc
/etc/ssh/sshd_config:Port 22

Este grep Los comandos son rápidos y devuelven resultados rápidamente, pero si se especifican demasiados archivos o subdirectorios, la búsqueda puede tardar mucho tiempo.

Buscar texto en la salida de otro comando

Similar a otras utilidades de Unix, grep también actúa sobre stdin Cuando canaliza la salida de otro comando en él. Esta es una forma rápida y útil de filtrar la salida del comando para que coincida con el patrón de texto que está buscando.

Por ejemplo, si desea comprobar si un paquete openssh Instalado en su sistema operativo Fedora o Red Hat Enterprise Linux (RHEL), puede canalizar comandos de salida rpm -qaque enumera todos los paquetes instalados, ponga grep Modo de búsqueda:

$ rpm -qa | grep ssh
libssh-config-0.9.6-4.fc36.noarch
libssh-0.9.6-4.fc36.x86_64
openssh-8.8p1-1.fc36.1.x86_64

Puede filtrar la salida de comandos largos usando grepes más fácil encontrar información útil.

[ Get the guide to installing applications on Linux. ]

Otras opciones útiles

Este grep Un comando proporciona muchas opciones para cambiar su modo de búsqueda o la forma en que muestra los resultados. Hasta ahora has visto algunos de ellos en este artículo. Si bien no puedo enumerar todas las opciones, aquí hay algunos otros ejemplos útiles:

  • Usar opciones -i Para búsquedas que no distinguen entre mayúsculas y minúsculas.

  • Usar opciones -v Búsqueda inversa y visualización de líneas que no coinciden con el patrón.
  • Usar opciones -w Solo busque patrones en medio de palabras completas y no otras palabras.
  • Usar opciones --color Para la salida en color, los patrones coincidentes son más fáciles de detectar.

Para lista completa grep opciones, consulte la página del manual.

¿Que sigue?

La utilidad GNU grep es flexible y útil, y lo ayuda con muchas tareas en sus actividades diarias de administrador del sistema.cuanto más usas grepcuanto más cómodo se sienta, antes se dará cuenta de que ha estado confiando en él.

Para más información grepecha un vistazo a algunos de estos enlaces:

También puede obtener más información sobre grep usar en su sistema linux man grep o un ejemplo rápido y valioso tldr herramienta.

LEER  ¿Qué es Git y cómo se instala Git en Linux?

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba