5 Punkte von GN⁺ 2023-12-01 | 1 Kommentare | Auf WhatsApp teilen

Zusammenfassung: Einführung in das neue Kommandozeilen-Suchwerkzeug ripgrep

  • ripgrep ist ein neues Kommandozeilen-Suchwerkzeug, das die Benutzerfreundlichkeit von The Silver Searcher mit der Leistung von GNU grep verbindet.
  • Es bietet Binärdateien für Linux, macOS und Windows und ist in Rust geschrieben.
  • Bei der Suche in einzelnen Dateien und großen Verzeichnissen überzeugt es durch Leistung und Genauigkeit.
  • Die Unicode-Unterstützung ist hervorragend, und im Allgemeinen ist es schneller als Werkzeuge, die Memory-Mapping verwenden.

Einführung in ripgrep

Vorteile

  • Es ist schneller als andere Suchwerkzeuge und durchsucht keine Dateien, die durch .gitignore ignoriert werden.
  • Es bietet die Möglichkeit, nur bestimmte Dateitypen zu durchsuchen oder auszuschließen.
  • Es unterstützt viele Funktionen von grep und bietet immer Unicode-Unterstützung.
  • Die PCRE2-Regex-Engine kann optional verwendet werden.
  • Es unterstützt verschiedene Textkodierungen sowie die Suche in komprimierten Dateien.
  • Es unterstützt beliebige Vorverarbeitungsfilter für Eingaben.

Gegenargumente

  • Es hält sich nicht an den POSIX-Standard und ist weniger universell als grep.
  • Bestimmte Funktionen oder Bugs anderer Werkzeuge gibt es in ripgrep möglicherweise nicht.
  • In bestimmten Edge Cases bei der Performance kann ripgrep langsamer sein als andere Werkzeuge.

Installation

  • Der Binärname von ripgrep ist rg und es kann auf verschiedenen Plattformen installiert werden.
  • Es werden Installationsmethoden für Homebrew, Archlinux und Rust-Programmierer bereitgestellt.
  • Ein direkter Build aus dem Quellcode ist ebenfalls möglich.

Kurze Tour

  • Die Nutzung von ripgrep auf der Kommandozeile unterscheidet sich nicht wesentlich von anderen ähnlichen Werkzeugen.
  • Terminalausgabe, Farben und Zeilennummern werden automatisch unterstützt.
  • Mit verschiedenen Suchoptionen und Mustern kann flexibel gesucht werden.

Die Struktur von ripgrep

Hintergrund

  • Es werden Unterschiede und Gemeinsamkeiten zwischen Nachfolgewerkzeugen von grep und ack erläutert.
  • ripgrep kombiniert die Fähigkeit von grep, große Dateien zu durchsuchen, mit den „smarten“ Standard-Sucheinstellungen von ack.

Vorbereitung der Dateisuche

  • Wichtig sind ein schneller Verzeichnis-Iterator und die Filterung von Dateipfaden.
  • Die schnelle Anwendung der Regeln aus .gitignore beeinflusst die Performance.

Suche

  • Wichtig sind eine schnelle Regex-Engine und Optimierungen für Literale.
  • Statt zeilenweise zu suchen oder die gesamte Datei zu verarbeiten, wird in großen Puffern auf einmal gesucht.

Ausgabe

  • Die Suchergebnisse werden in einen Speicherpuffer geschrieben und zur Ausgabe nach stdout serialisiert.

Methodik

Überblick

  • Der Fokus liegt auf den Problemen, die Nutzer lösen wollen, und auf dem Bemühen um faire Benchmarks.
  • Verschiedene Werkzeuge werden benchmarked, wobei Unterschiede im Standardverhalten der einzelnen Werkzeuge bei den Vergleichen berücksichtigt werden.

Meinung von GN⁺

Das Wichtigste an diesem Text ist, dass er detailliert erklärt, welche Vorteile ripgrep im Vergleich zu bestehenden Suchwerkzeugen bietet. Besonders die hohe Geschwindigkeit, die Unicode-Unterstützung sowie die Unterstützung verschiedener Dateiformate und Kodierungen können für Nutzer attraktiv sein. Interessant ist der Text auch deshalb, weil er hilft zu verstehen, wie sich ein neues Werkzeug von bestehenden Werkzeugen unterscheidet und welche Auswirkungen diese Unterschiede in der Praxis für Anwender haben können.

1 Kommentare

 
GN⁺ 2023-12-01
Hacker-News-Kommentare
  • Die Kombination aus ripgrep und fzf ist sehr schnell, und es wird ein Beispiel für eine PowerShell-Funktion gezeigt, die das nutzt. Diese Funktion sucht zunächst mit ripgrep, verwendet dann fzf für die Fuzzy-Suche und zeigt mit bat den Kontext der Ergebnisse an. Diese Methode ist nützlich, um in Projekten mit mehreren Repositories schnell die Position bestimmter Inhalte zu finden.
  • Es wird vorgestellt, wie man ripgrep mit dem Paket project.el und dem Paket dumb-jump in Emacs nutzt. dumb-jump beschränkt die Suche für den aktuellen Dateityp automatisch auf ein bestimmtes Projektverzeichnis und unterstützt auch ein weiteres schnelles Tool namens ag.
  • Interessant ist, dass ripgrep über einen Node.js-Wrapper die Suchfunktion von VS Code bereitstellt.
  • Nutzer von ripgrep nennen im Vergleich zu grep vor allem die einfachere Nutzung und die höhere Geschwindigkeit als Gründe, wobei insbesondere die automatische Anwendung von gitignore-Regeln als nützlich empfunden wird.
  • Es wird erwähnt, dass parallelisierte grep-Alternativen wie ripgrep und ag deutlich schneller als grep sind, sodass der Geschwindigkeitsunterschied kein besonders aussagekräftiges Kriterium mehr ist und man sie nach anderen Maßstäben bewerten sollte.
  • Es wird darauf hingewiesen, dass die ursprüngliche Ankündigung von ripgrep aus dem Jahr 2016 stammt, und vorgeschlagen, die Jahreszahl im Titel zu ergänzen.
  • Es wird erwähnt, dass qgrep durch die Nutzung eines Index sehr schnell ist, ripgrep aber langsamer werden kann, wenn UTF8-Multiline-Matches benötigt werden.
  • Es wird ein praktischer Workflow geteilt, mit dem sich über das Consult-Paket innerhalb von Emacs projektweite Bearbeitungen mit ripgrep durchführen lassen.
  • Es wird informiert, dass die Version ripgrep-all auch mit anderen Dokumenttypen wie PDF- und doc-Dateien funktioniert.
  • Es wird die Frage aufgeworfen, warum grep nicht ersetzt oder verbessert wird, und angemerkt, dass dieses Thema inzwischen etwas älter ist.