grep
100%

Text-Fu · Lección 16

grep

Aprende a seleccionar líneas mediante cadenas fijas o expresiones regulares y a interpretar los resultados de grep.

La orden grep selecciona líneas de entrada que coinciden con un patrón. Puede buscar en archivos indicados o en la entrada estándar, imprimir contexto coincidente, contar líneas seleccionadas y comunicar mediante su estado de salida si se encontró una coincidencia.

Buscar líneas en un archivo

Proporciona un patrón seguido de uno o más archivos de entrada:

$ grep 'fox' sample.txt

De forma predeterminada, grep de GNU interpreta el patrón como una expresión regular básica e imprime todas las líneas seleccionadas. Pon los patrones entre comillas para evitar que el shell interprete primero los espacios y metacaracteres.

Usa -F cuando el patrón deba tratarse como una cadena fija en vez de como una expresión regular:

$ grep -F 'price: $5.00' products.txt

¿Qué orden busca en products.txt el texto literal price: $5.00 sin tratar los caracteres del patrón como sintaxis de expresiones regulares?

Seleccionar la sintaxis del patrón

grep de GNU ofrece tres modos de patrón habituales:

  • Predeterminado: expresiones regulares básicas.
  • -E: expresiones regulares extendidas, con operadores como |, + y ? sin barras invertidas.
  • -F: cadenas fijas sin operadores de expresiones regulares.

Anclas como ^ y $ coinciden con el principio y el final de una línea. Para encontrar en una lista de texto nombres de archivo que terminen con el sufijo literal .txt:

$ grep -E '\.txt$' filenames.txt

La barra invertida hace que el punto sea literal; un . sin escapar en una expresión regular coincide con cualquier carácter individual.

¿Qué expresión regular extendida coincide con líneas que terminan con el sufijo literal .txt?

Proporcionar patrones de forma segura

Usa -e PATTERN para proporcionar un patrón explícitamente. Resulta especialmente útil cuando el patrón comienza por -, porque las comillas por sí solas no detienen el análisis de opciones:

$ grep -e '-v' settings.conf

Puedes repetir -e para seleccionar líneas que coincidan con cualquiera de los patrones proporcionados. Usa -f patterns.txt para leer un patrón por línea desde un archivo.

¿Qué orden busca el patrón -v en settings.conf en vez de interpretarlo como una opción?

Controlar la salida seleccionada

  • -i: ignora las diferencias entre mayúsculas y minúsculas.
  • -n: antepone números de línea a las líneas seleccionadas.
  • -v: selecciona las líneas que no coinciden.
  • -c: imprime la cantidad de líneas seleccionadas de cada archivo de entrada.
  • -o: imprime solo cada parte coincidente no vacía en lugar de la línea seleccionada completa.

Por ejemplo, cuenta líneas que contengan fox sin distinguir entre mayúsculas y minúsculas:

$ grep -ic 'fox' sample.txt

-c cuenta líneas seleccionadas, no la cantidad total de coincidencias dentro de ellas. Una línea que contiene fox fox aporta uno al recuento. Cuando necesites específicamente apariciones no superpuestas con grep de GNU, una posible tubería es grep -o PATTERN | wc -l.

data.txt tiene una línea que contiene error error y dos líneas sin coincidencias. ¿Qué muestra grep -c 'error' data.txt?

Filtrar la entrada estándar y buscar en directorios

Cuando no se indica ningún archivo de entrada, grep lee de la entrada estándar y encaja de forma natural en una tubería:

$ env | grep '^USER='

Usa -r para buscar recursivamente en archivos legibles dentro de un directorio:

$ grep -r 'listen_port' config/

Los diagnósticos, como errores de permisos, se envían a la salida de error estándar y no forman parte de la entrada en la que se buscan coincidencias. Limita la ruta de búsqueda y comprende los permisos en vez de elevar el acceso inmediatamente.

En generate-report | grep 'failed', ¿qué entrada examina grep?

Interpretar el estado de salida

En búsquedas normales, grep de GNU devuelve el estado 0 cuando se selecciona al menos una línea, 1 cuando no se selecciona ninguna y 2 cuando se produce un error. Esto permite que los scripts comprueben una coincidencia sin tratar «sin coincidencias» como la misma situación que un archivo ilegible o un patrón no válido.

Opciones como -q suprimen la salida normal y se detienen tras encontrar una coincidencia, lo que resulta útil para comprobaciones condicionales. No deduzcas el éxito únicamente de una pantalla vacía: -q, una redirección, la ausencia de coincidencias y un error pueden producir poca o ninguna salida estándar, pero sus estados son distintos.

Para practicar búsquedas con cadenas fijas y expresiones regulares, prueba estos laboratorios prácticos:

  1. Buscar texto con grep en Linux - Practica búsquedas básicas, números de línea, anclas y expresiones regulares básicas y extendidas para crear coincidencias de patrones complejas con grep.
  2. Orden grep de Linux: búsqueda de patrones - Aprende a usar grep para buscar patrones en archivos de texto y explora expresiones regulares para definir búsquedas complejas.
  3. Aguja en el pajar - Usa grep para buscar patrones concretos, contar apariciones, extraer valores únicos y combinar varios criterios de búsqueda en archivos de registro.

Lección completada

Has completado grep

Ahora puedes buscar texto orientado a líneas y distinguir las coincidencias de los errores.

  • Elige entre coincidencias básicas, extendidas o de cadenas fijas.

  • Pon los patrones entre comillas y usa -e si comienzan por un guion.

  • Cuenta líneas seleccionadas sin confundirlas con apariciones.

  • Filtra la entrada estándar o busca recursivamente en un directorio limitado.

  • Interpreta los estados de salida de coincidencia, ausencia de coincidencia y error.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Volver a Text-Fu