search tool grep

Contexto y propósito

grep y herramientas modernas basadas en él permiten realizar búsquedas de texto rápidas, expresivas y escalables dentro de sistemas de archivos, repositorios de código y bases de conocimiento como Sistemas. Son clave para:

  • Localizar configuraciones, logs y referencias técnicas.
  • Auditar código y documentación.
  • Potenciar flujos de trabajo de análisis, debugging y documentación en Obsidian.

Relación con Obsidian y Dataview

  • Permite obtener dinámicamente los tags del archivo actual.
  • Útil para:
    • Construir consultas automáticas.
    • Integrar búsquedas externas (grep/ripgrep) basadas en metadatos.
    • Generar pipelines donde los tags de Obsidian actúan como filtros semánticos.

grep — fundamentos

  • Herramienta clásica de búsqueda por patrones (regex) en texto plano.
  • Características principales:
    • Búsqueda línea a línea.
    • Soporte de expresiones regulares POSIX.
    • Uso eficiente en scripts y automatizaciones.
  • Limitaciones:
    • Más lenta en grandes repositorios.
    • Manejo básico de binarios.
    • Menor ergonomía comparado con herramientas modernas.

Opciones clave de grep

  • -r búsqueda recursiva en directorios.
  • -i ignora mayúsculas/minúsculas.
  • -n muestra número de línea.
  • -l lista solo archivos con coincidencias.
  • -v invierte la coincidencia (exclusión).
  • -E habilita regex extendidas.

ripgrep (rg) — evolución moderna

BurntSushiripgrep ripgrep recursively searches directories

  • Reemplazo moderno y optimizado de grep.
  • Ventajas principales:
    • Extremadamente rápido (usa Rust).
    • Respeta .gitignore por defecto.
    • Manejo eficiente de binarios y grandes volúmenes.
    • Mejor soporte de Unicode.
  • Ideal para:
    • Repositorios grandes.
    • Monorepos.
    • Integración con editores y sistemas de notas.

Comparación grep vs ripgrep

  • Rendimiento:
    • grep: adecuado para casos simples.
    • ripgrep: superior en cualquier escala.
  • Experiencia de uso:
    • grep: más flags manuales.
    • ripgrep: defaults inteligentes.
  • Integración:
    • ripgrep se integra mejor con editores, IDEs y herramientas modernas.

Mejora de búsqueda en Sistemas

  • Estrategias:
    • Usar tags de Obsidian como filtros conceptuales.
    • Mapear carpetas de Sistemas a rutas de búsqueda.
    • Automatizar búsquedas recurrentes con scripts.
  • Ejemplos de uso:
    • Localizar patrones arquitectónicos.
    • Detectar configuraciones duplicadas.
    • Auditar referencias cruzadas entre notas técnicas.

Uso combinado con herramientas

  • grep / ripgrep + shell:
    • Pipes con sed, awk, xargs.
    • Exportación de resultados a markdown.
  • grep / ripgrep + Obsidian:
    • Generar enlaces automáticos.
    • Crear índices de conocimiento.
    • Sincronizar resultados con Dataview.

Documentación y recursos

Casos de uso avanzados

  • Búsqueda semántica aproximada combinando:
    • Tags.
    • Convenciones de nombres.
    • Expresiones regulares estructuradas.
  • Indexación previa para acelerar búsquedas frecuentes.
  • Integración con tareas automatizadas de documentación y auditoría técnica.

    grep — Cheatsheet de comandos

Búsqueda básica

Buscar una palabra en un archivo

grep "error" archivo.log

`

Buscar ignorando mayúsculas y minúsculas

grep -i "error" archivo.log

Búsqueda recursiva

Buscar en todos los archivos de un directorio

grep -r "TODO" .

Buscar recursivamente mostrando número de línea

grep -rn "config" .

Información del resultado

Mostrar solo nombres de archivos con coincidencias

grep -rl "password" .

Mostrar líneas que NO coinciden

grep -v "debug" app.log

Contar coincidencias

grep -c "WARN" app.log

Expresiones regulares

Regex extendidas

grep -E "error|fail|fatal" system.log

Coincidencia al inicio de línea

grep "^ERROR" system.log

Coincidencia al final de línea

grep "completed$" system.log

Coincidencia de palabras completas

grep -w "root" /etc/passwd

Contexto de líneas

Mostrar líneas antes y después

grep -C 3 "exception" app.log

Mostrar solo líneas anteriores

grep -B 2 "timeout" app.log

Mostrar solo líneas posteriores

grep -A 4 "startup" app.log

Archivos y formatos

Buscar solo en archivos con extensión específica

grep -r "SELECT" --include="*.sql" .

Excluir extensiones

grep -r "token" --exclude="*.min.js" .

Excluir directorios

grep -r "secret" --exclude-dir=node_modules .

Uso con pipes

Filtrar salida de otro comando

ps aux | grep "python"

Excluir el propio proceso grep

ps aux | grep "nginx" | grep -v grep

Logs y sistemas

Buscar múltiples patrones desde un archivo

grep -f patrones.txt app.log

Seguimiento de logs (combinado con tail)

tail -f app.log | grep "ERROR"

Rendimiento

Limitar número de coincidencias

grep -m 5 "failure" system.log

Forzar tratamiento de binarios como texto

grep -a "version" archivo.bin

Integración con Sistemas

Auditar configuraciones sensibles

grep -r "password" /etc

Buscar referencias cruzadas en notas

grep -r "\[\[.*Sistemas.*\]\]" .

Alternativas modernas

Equivalente rápido usando ripgrep

rg "error"