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
mmapinfla el RSS; desactivarmmapmuestra 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
lessu 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
cindexdecsearch). - 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
grepesté 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.