5 points par GN⁺ 2023-12-01 | 1 commentaires | Partager sur WhatsApp

Résumé : présentation de ripgrep, un nouvel outil de recherche en ligne de commande

  • ripgrep est un nouvel outil de recherche en ligne de commande qui combine la facilité d’usage de The Silver Searcher et les performances de GNU grep.
  • Il fournit des binaires pour Linux, Mac et Windows, et est écrit en Rust.
  • Il se distingue par ses performances et sa précision, aussi bien sur un fichier unique que lors de recherches dans de très grands répertoires.
  • Sa prise en charge d’Unicode est excellente, et il est généralement plus rapide que les outils qui utilisent le memory mapping.

Présentation de ripgrep

Avantages

  • Il est plus rapide que les autres outils de recherche et n’analyse pas les fichiers ignorés par .gitignore.
  • Il permet de rechercher uniquement certains types de fichiers ou de les exclure.
  • Il prend en charge de nombreuses fonctionnalités de grep et gère toujours Unicode.
  • Il peut utiliser de façon optionnelle le moteur d’expressions régulières PCRE2.
  • Il prend en charge divers encodages de texte ainsi que la recherche dans des fichiers compressés.
  • Il prend en charge des filtres de prétraitement arbitraires en entrée.

Arguments contre

  • Il ne respecte pas le standard POSIX et est moins universel que grep.
  • Certaines fonctionnalités spécifiques ou certains bugs présents dans d’autres outils peuvent ne pas exister dans ripgrep.
  • Dans certains cas limites de performance, ripgrep peut être plus lent que d’autres outils.

Installation

  • Le nom du binaire de ripgrep est rg, et il peut être installé sur diverses plateformes.
  • Des méthodes d’installation sont proposées pour Homebrew, Archlinux et les programmeurs Rust.
  • Il est également possible de le compiler directement depuis les sources.

Visite rapide

  • L’utilisation en ligne de commande de ripgrep ne diffère pas beaucoup de celle d’autres outils similaires.
  • Il prend automatiquement en charge la sortie terminal, les couleurs, l’affichage des numéros de ligne, etc.
  • Il est possible d’effectuer des recherches à l’aide de nombreuses options et de différents motifs.

Structure de ripgrep

Contexte

  • Explication des différences et des points communs entre grep et les outils descendants de ack.
  • ripgrep combine la capacité de grep à rechercher dans de gros fichiers et les réglages par défaut « intelligents » de recherche de ack.

Préparation de la recherche de fichiers

  • L’utilisation d’un itérateur de répertoires rapide et le filtrage des chemins de fichiers sont importants.
  • L’application rapide des règles des fichiers .gitignore a un impact sur les performances.

Recherche

  • Un moteur d’expressions régulières rapide et l’optimisation des littéraux sont importants.
  • Au lieu de rechercher ligne par ligne ou sur l’ensemble du fichier, il recherche de grands buffers en une seule fois.

Sortie

  • Les résultats de recherche sont écrits dans un buffer mémoire, puis sérialisés vers stdout pour l’affichage.

Méthodologie

Vue d’ensemble

  • L’accent est mis sur le problème que l’utilisateur cherche à résoudre, avec un effort pour proposer des benchmarks équitables.
  • Divers outils sont benchmarkés, et les comparaisons tiennent compte des différences de comportement par défaut de chacun.

L’avis de GN⁺

Le point le plus important de cet article est qu’il explique en détail quels avantages ripgrep présente par rapport aux outils de recherche existants. En particulier, ses performances élevées, sa prise en charge d’Unicode et son support de divers formats de fichiers et encodages peuvent le rendre attractif pour les utilisateurs. Cet article est intéressant parce qu’il aide à comprendre en quoi ce nouvel outil diffère des outils existants, et comment ces différences peuvent avoir un impact concret pour les utilisateurs.

1 commentaires

 
GN⁺ 2023-12-01
Avis Hacker News
  • La combinaison de ripgrep et fzf est très rapide, et un exemple de fonction PowerShell exploitant cela est fourni. Cette fonction effectue une recherche avec ripgrep, puis utilise fzf pour une recherche floue, et affiche le contexte des résultats avec bat. Cette méthode est utile pour retrouver rapidement l’emplacement d’un contenu précis dans des projets répartis sur plusieurs dépôts.
  • Une méthode pour utiliser ripgrep avec les paquets project.el et dumb-jump d’Emacs est présentée. dumb-jump limite automatiquement la recherche au type de fichier courant dans un répertoire de projet donné, et prend aussi en charge un autre outil rapide, ag.
  • Il est intéressant de noter que ripgrep alimente la fonctionnalité de recherche de VS Code via un wrapper Node.js.
  • Les utilisateurs de ripgrep citent principalement sa facilité d’utilisation et son gain de vitesse par rapport à grep, en particulier la fonction qui applique automatiquement les règles de .gitignore.
  • Il est mentionné que les remplaçants parallélisés de grep, comme ripgrep et ag, sont bien plus rapides que grep, si bien que l’écart de vitesse n’est plus un critère très discriminant et qu’il faut les évaluer autrement.
  • Un commentaire souligne que l’annonce initiale de ripgrep date de 2016 et suggère d’indiquer l’année dans le titre.
  • Il est indiqué que qgrep offre une grande rapidité grâce à l’utilisation d’un index, mais que ripgrep peut ralentir lorsqu’il faut gérer des correspondances UTF-8 sur plusieurs lignes.
  • Un workflow pratique est partagé pour effectuer des modifications à l’échelle d’un projet entier via le paquet Consult, qui permet d’utiliser ripgrep depuis Emacs.
  • Il est signalé que la version ripgrep-all fonctionne aussi avec d’autres types de documents, comme les fichiers PDF et doc.
  • Un intervenant s’interroge sur les raisons pour lesquelles grep n’est pas remplacé ou amélioré, et estime que ce sujet est un peu ancien.