Ugrep – un grep más potente, rápido, fácil de usar y compatible

Una nueva alternativa a grep, ugrep, se compara con herramientas consolidadas como ripgrep y GNU grep en velocidad, conjunto de funciones y compatibilidad. Los comentaristas destacan las fortalezas de ugrep —TUI integrada, coincidencia aproximada, soporte para archivos comprimidos e indexación, y opciones de estilo GNU— mientras cuestionan sus afirmaciones de rendimiento y señalan incompatibilidades puntuales con GNU grep y el manejo de locales. Gran parte del debate gira en torno a los compromisos entre rendimiento bruto, semántica de regex, tamaño binario, portabilidad y la practicidad de adoptar herramientas no estándar en entornos donde `grep` normal siempre está disponible.

Comparaciones de rendimiento (ugrep vs ripgrep y otros)

  • El README de ugrep afirma que es más rápido que GNU grep, ag, ack, sift y, por lo general, más rápido que ripgrep.
  • Algunos comentaristas son escépticos ante los benchmarks publicados por ugrep y prefieren comparaciones independientes.
  • Un subhilo detallado profundiza en la metodología de los benchmarks:
    • Las herramientas tipo grep están orientadas a líneas y pueden añadir optimizaciones más allá de una biblioteca regex pura.
    • Las cifras de uso de memoria pueden ser engañosas debido a que mmap infla el RSS; desactivar mmap muestra un uso real del heap mucho menor.
    • El rendimiento depende en gran medida del tamaño de los archivos, la frecuencia de coincidencias y la forma del patrón (por ejemplo, repeticiones acotadas como .{100} pueden poner a prueba muchos motores regex).
  • Se discuten Hypergrep/Hyperscan como alternativas muy rápidas, especialmente para muchos patrones, pero con semántica de coincidencia delicada y problemas de compilación/portabilidad.

Funciones y diferencias frente a ripgrep/grep

  • ugrep está disponible en repositorios basados en Debian y apunta a ser compatible con GNU grep, incluidas las opciones y el comportamiento, aunque los usuarios encuentran incompatibilidades concretas (por ejemplo, en el manejo de locale/clases de caracteres).
  • Funciones destacadas de ugrep que reciben elogios:
    • Paginador integrado con búsqueda dentro de los resultados (multiplataforma).
    • Coincidencia aproximada.
    • Búsqueda recursiva en archivos comprimidos que respeta la estructura del archivo.
    • TUI interactiva e interfaz para construir regex.
  • Algunos siguen prefiriendo ripgrep por: herramientas maduras, familiaridad, velocidad “suficientemente buena” y valores predeterminados sólidos.

Sintaxis de regex y límites de palabra

  • Debate sobre la sintaxis POSIX BRE/ERE frente a la de estilo PCRE.
  • Algunos usuarios se quedan con la sintaxis clásica de grep; otros consideran que es una razón para evitar grep.
  • La regex predeterminada de ripgrep es similar a grep -E, con garantías de tiempo lineal (sin backrefs/lookaround).
  • Se discuten los límites de palabra (\b, \<, \>) y cómo las definiciones Unicode de “palabra” difieren entre motores.

Paginación, TUI y “facilidad de uso”

  • El paginador integrado en ugrep es un punto a favor para algunos, especialmente en Windows; otros lo ven como una función indeseable y prefieren canalizar explícitamente hacia less u otros paginadores.
  • Se mencionan varias TUIs basadas en ripgrep e integraciones con fzf como alternativas.
  • “Fácil de usar” se interpreta por algunos como la presencia de una TUI interactiva más que como la ergonomía tradicional de la CLI.

Indexación y repositorios grandes

  • El indexador n‑gram de ugrep existe, pero se informa que es lento (por ejemplo, indexar el árbol del kernel de Linux mucho más lento que cindex de csearch).
  • Crea archivos de índice por directorio y se etiqueta como beta; la reindexación es incremental.

Configuración, estándares y portabilidad

  • ripgrep usa una ruta de configuración basada en variable de entorno en lugar de XDG; algunos lo encuentran más simple, otros no les gusta la divergencia.
  • Se plantean preocupaciones sobre la aplicabilidad de XDG en Windows/macOS.
  • Algunos usuarios no adoptarán greps no estándar porque dependen de que grep esté presente en todos los sistemas, especialmente en máquinas bloqueadas o de clientes.

Otras herramientas y notas del ecosistema

  • Se mencionan Hypergrep, grab, hound, csearch, ripgrep-all, fzf y varios paginadores (less, bat, otros).
  • El hilo destaca que muchos greps modernos son “suficientemente buenos”, y la elección a menudo depende de pequeñas preferencias o funciones, más que de una dominancia clara.