Ripgrep ist ein zeilenorientiertes Suchwerkzeug, das die Nützlichkeit des Silver Searchers und die Geschwindigkeit von GNU grep kombiniert. Es funktioniert, indem es den aktuellen Verzeichnispfad rekursiv nach einem Regex-Muster durchsucht und versteckte und binäre Dateien standardmäßig ignoriert. Es wird derzeit auf Windows, Mac OS und Linux unterstützt, wobei binäre Downloads nach jedem neuen verfügbar sind Freisetzung.
Warum ripgrep verwenden?
Es ist schneller als grep, awk und sed. Ignoriert standardmäßig binäre und versteckte Dateien. Ähnlich wie grep kann es nach bestimmten Dateitypen suchen oder andere explizit ignorieren. Es unterstützt nativ andere Textkodierungen als UTF- und Unicode-Unterstützung. Die Geschwindigkeit von Ripgrep kommt von der Regex-Engine von Rust, aus der es mit endlichen Automaten, SIMD und anderen aggressiven wörtlichen Optimierungen erstellt wurde, um seine schnelle Suche zu berücksichtigen. Es unterstützt auch die Suche mit Memory Maps unter Verwendung von Zwischenpuffern, wodurch es für einzelne Dateien und große Verzeichnisse geeignet ist.
So installieren Sie Ripgrep
Der binäre Name für ripgrep ist rg. Linux-Binärdateien sind statische ausführbare Dateien, während Windows-Binärdateien mit MinGW (GNU) oder mit Microsoft Visual C++ (MSVC) erstellt werden.
Auf Mac OS X Homebrew Sie können es entweder von homebrew-core installieren, wie folgt:
$ brew install ripgrep
oder Sie können eine mit Rost kompilierte Binärdatei (einschließlich SIMD und alle Optimierungen) installieren, indem Sie einen benutzerdefinierten Tap verwenden:
$ brew tap burntsushi/ripgrep https://github.com/BurntSushi/ripgrep.git
$ brew install burntsushi/ripgrep/ripgrep-bin
Wenn Sie ein Windows Chocolatey-Benutzer sind, können Sie es installieren von dem offizielles Repository.
$ choco install ripgrep
Wenn du ein bist Arch Linux Benutzer, dann können Sie aus den offiziellen Repos installieren.
$ pacman -S ripgrep
Wenn du ein Gentoo Benutzer können Sie von der offizielles Repository.
$ emerge ripgrep
Wenn du ein Fedora 24+ Benutzer können Sie installieren von kopr.
$ dnf copr enable carlgeorge/ripgrep
$ dnf install ripgrep
Wenn du ein RHEL/CentOS 7 Benutzer können Sie installieren von kopr.
$ yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlgeorge/ripgrep/repo/epel-7/carlgeorge-ripgrep-epel-7.repo
$ yum install ripgrep
Wenn du ein Nix Benutzer können Sie installieren von nixpkgs.
$ nix-env --install ripgrep #Or using the attribute name, which is also `ripgrep`
Wenn du ein Rust-Programme, es kann mit Ladung installiert werden. Beachten Sie, dass dies erfordert, dass Sie Rost 1.12 oder neuer Eingerichtet.
$ cargo install ripgrep
ripgrep befindet sich derzeit in keinem anderen Paket-Repository. Das möchte ich ändern.
Einige Beispiele
Sie können jedes Schlüsselwort rekursiv mit dem Befehl “rg ‘name'” suchen, wie unten gezeigt:
$ rg plugins
Dies example überspringt alle versteckten und binären Dateien im Suchpfad. was explizit mit ‘-u flag’ oder ‘-uu flags’ angegeben werden kann, wie unten gezeigt.
$ rg -uu plugins # similar to `grep -r`
$ rg -uuu plugins # similar to `grep -a -r`
Suchen und ersetzen
Suchen Sie nach Mustern aus der angegebenen Datei mit einem Muster pro Zeile. Bei Verwendung dieses Flags oder mehrfach oder in Kombination mit dem Flag ‘-e/–regexp’ werden alle bereitgestellten Muster durchsucht. Leere Musterzeilen stimmen mit allen Eingabezeilen überein, und der Zeilenumbruch wird nicht als Teil des Musters gezählt. -r, –replace
1) Finden Sie Vor- und Nachnamen und tauschen Sie sie mit einem Regex-Muster aus, das sie zwei Variablen zuweist und das Flag –replace anwendet
$ rg '([A-Z][a-z]+)s+([A-Z][a-z]+)' --replace '$2, $1' #'([A..Z]..)' -> regexp flag
Sucht nach Mustern in Dateien mit dem Flag –files, das jede Datei ausgibt, die durchsucht werden würde, ohne die Suche durchzuführen. l –files-with-matches Flag zeigt die Pfade mit mindestens einer Übereinstimmung an. Auch zum Anzeigen von Dateien ohne Übereinstimmung(–dateien-ohne-übereinstimmung); Drucken Sie jede Datei, die durchsucht werden würde, ohne die Suche tatsächlich durchzuführen. Dies ist nützlich, um festzustellen, ob eine bestimmte Datei durchsucht wird oder nicht.
2) Suchen Sie nach Dateien mit Plugins im Dokumentenverzeichnis über symbolische Links
$ rg -LF 'plugins' /home/localhost/Documents/ # -L flag for following symbolic links
Schließen Sie Dateien/Verzeichnisse für die Suche ein oder aus, die dem angegebenen Glob mit dem Flag -g oder –glob entsprechen. Dies überschreibt immer jede andere Ignorierlogik. Es können mehrere Glob-Flags verwendet werden. Globbing-Regeln stimmen mit .gitignore-Globs überein. Stellen Sie einem Glob ein ! um es auszuschließen.
$ rg plug -g 'README.*'
$ rg plug -g '!*.min.js' #excludes glob
Fazit
Ripgrep schlägt derzeit alle anderen auf dem Linux-System gefundenen Suchwerkzeuge, da es sowohl einzelne als auch große Dateiverzeichnisse durchsucht, und es ist sowohl in Bezug auf Leistung als auch Korrektheit besser. Außerdem bietet ripgrep Unicode-Unterstützung und funktioniert besser als die derzeit verfügbaren Tools wie grep, awk, sed, find und ist ein zusätzlicher Vorteil für jeden Linux-Benutzer.