5 puntos por GN⁺ 2023-12-01 | 1 comentarios | Compartir por WhatsApp

Resumen: introducción a la nueva herramienta de búsqueda de línea de comandos ripgrep

  • ripgrep es una nueva herramienta de búsqueda de línea de comandos que combina la facilidad de uso de The Silver Searcher con el rendimiento de GNU grep.
  • Ofrece binarios para Linux, Mac y Windows, y está escrita en Rust.
  • Destaca por su rendimiento y precisión tanto en la búsqueda de archivos individuales como en directorios grandes.
  • Tiene un soporte excelente para Unicode y, por lo general, es más rápida que las herramientas que usan memory mapping.

Introducción a ripgrep

Ventajas

  • Es más rápida que otras herramientas de búsqueda y no busca en archivos ignorados por .gitignore.
  • Ofrece funciones para buscar solo ciertos tipos de archivo o excluirlos.
  • Soporta muchas funciones de grep y siempre tiene soporte para Unicode.
  • Puede usar opcionalmente el motor de expresiones regulares PCRE2.
  • Soporta varias codificaciones de texto y la búsqueda en archivos comprimidos.
  • Soporta filtros arbitrarios de preprocesamiento de entrada.

Opiniones en contra

  • No cumple con el estándar POSIX y no es tan universal como grep.
  • Puede que no tenga ciertas funciones o errores presentes en otras herramientas.
  • En algunos casos límite de rendimiento, ripgrep puede ser más lenta que otras herramientas.

Instalación

  • El nombre del binario de ripgrep es rg y se puede instalar en varias plataformas.
  • Se ofrecen métodos de instalación para Homebrew, Archlinux y programadores de Rust.
  • También es posible compilarla directamente desde el código fuente.

Recorrido rápido

  • El uso de ripgrep desde la línea de comandos no es muy distinto al de otras herramientas similares.
  • Soporta automáticamente salida en terminal, colores y numeración de líneas.
  • Se puede buscar usando varias opciones y patrones.

Estructura de ripgrep

Contexto

  • Explica las diferencias y similitudes entre grep y las herramientas descendientes de ack.
  • ripgrep combina la capacidad de grep para buscar en archivos grandes con la configuración predeterminada de búsqueda "inteligente" de ack.

Preparación de la búsqueda de archivos

  • Es importante usar un iterador rápido de directorios y el filtrado de rutas de archivos.
  • Aplicar rápidamente las reglas de los archivos .gitignore afecta el rendimiento.

Búsqueda

  • Son importantes un motor rápido de expresiones regulares y la optimización de literales.
  • Busca en grandes búferes de una sola vez, en lugar de buscar línea por línea o procesar archivos completos de otra manera.

Salida

  • Escribe los resultados de búsqueda en un búfer de memoria y luego los serializa hacia stdout.

Metodología

Panorama general

  • Se enfoca en el problema que el usuario intenta resolver y busca hacer benchmarks justos.
  • Compara varias herramientas considerando las diferencias en el comportamiento predeterminado de cada una.

Opinión de GN⁺

Lo más importante de este texto es que explica en detalle qué ventajas tiene ripgrep frente a las herramientas de búsqueda existentes. En particular, su alto rendimiento, soporte para Unicode y compatibilidad con varios formatos de archivo y codificaciones pueden ser razones atractivas para los usuarios. Este texto resulta interesante porque ayuda a entender en qué se diferencia una herramienta nueva de las ya existentes y qué impacto podrían tener esas diferencias para los usuarios reales.

1 comentarios

 
GN⁺ 2023-12-01
Comentarios de Hacker News
  • La combinación de ripgrep y fzf es muy rápida, y se ofrece un ejemplo de una función de PowerShell que la aprovecha. Esta función busca con ripgrep, luego usa fzf para hacer búsqueda difusa y muestra el contexto de los resultados con bat. Este método es útil para encontrar rápidamente la ubicación de contenido específico en proyectos con varios repositorios.
  • Se presenta una forma de usar ripgrep con el paquete project.el de Emacs y el paquete dumb-jump. dumb-jump limita automáticamente la búsqueda al tipo de archivo actual dentro de un directorio de proyecto específico, y también soporta otra herramienta rápida llamada ag.
  • Resulta interesante que ripgrep provea la funcionalidad de búsqueda de VS Code a través de un wrapper de Node.js.
  • Los usuarios de ripgrep señalan como razones principales su facilidad de uso y la mejora de velocidad frente a grep, y consideran especialmente útil la función que aplica automáticamente las reglas de .gitignore.
  • Se menciona que las alternativas paralelizadas a grep, como ripgrep y ag, son mucho más rápidas que grep, por lo que la diferencia de velocidad deja de ser un criterio tan decisivo y habría que evaluarlas de otra manera.
  • Se señala que el anuncio inicial de ripgrep fue en 2016 y se sugiere que el título debería indicar el año.
  • Se menciona que qgrep ofrece gran velocidad al usar índices, pero que ripgrep puede volverse lento cuando se necesitan coincidencias multilínea en UTF-8.
  • Se comparte un flujo de trabajo conveniente para editar un proyecto completo mediante el paquete Consult, que usa ripgrep dentro de Emacs.
  • Se informa que la versión ripgrep-all también funciona con otros tipos de documentos, como archivos PDF y doc.
  • Se plantea la duda de por qué grep no ha sido reemplazado o mejorado, y se evalúa que este tema ya tiene algo de antigüedad.