# ripgrep (rg) Remplaçant de *grep* https://github.com/BurntSushi/ripgrep ##### Installation: ```bash $ brew install ripgrep ``` ##### Utilisation: ```bash $ rg PATH ~/.zshrc ``` rg ```bash # regex ('core' plus 1 ou plusiers lettres) $ rg 'core\w+' ~/.zshrc 22:PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH 25:coreutils=false # regex ('core' plus 0 ou plusiers lettres) $ rg 'core\w*' ~/.zshrc 22:PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH 25:coreutils=false # string $ rg -F 'eval "$(' ~/.zshrc 83:eval "$(zoxide init --cmd j zsh)" 107:eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)" ``` [https://docs.rs/regex/*/regex/#syntax](https://docs.rs/regex/*/regex/#syntax) rg dans tout un répertoire: ```bash $ rg '#!' handbrake-batchconvert.sh 1:#!/bin/sh composer.sh 1:#!/bin/bash tmutil.sh 1:#!/bin/bash ``` ```bash $ rg '#!' Scripts Scripts/kymsu2/kymsu2.sh 1:#!/usr/bin/env bash Scripts/sonos/test.sh 1:#!/usr/bin/env bash ``` En l'absence de chemin, rg cherche dans le répertoire courant. ##### Filtre manuel: ```bash # Rechercher uniquement dans les fichiers .sh rg echo -g '*.sh' # Rechercher partout sauf dans les fichiers .sh rg echo -g '!*.sh' ``` ##### File types ```bash $ rg --type-list ... config: *.cfg, *.conf, *.config, *.ini md: *.markdown, *.md, *.mdown, *.mkdn php: *.php, *.php3, *.php4, *.php5, *.phtml sh: *.bash, *.bashrc, *.csh, *.cshrc, *.ksh, *.kshrc, *.sh, *.tcsh, *.zsh, .bash_login, .bash_logout, .bash_profile, .bashrc, .cshrc, .kshrc, .login, .logout, .profile, .tcshrc, .zlogin, .zlogout, .zprofile, .zshenv, .zshrc, bash_login, bash_logout, bash_profile, bashrc, profile, zlogin, zlogout, zprofile, zshenv, zshrc ... ``` ```bash # Recherche dans les fichiers shell .bashrc, .zshrc... $ rg 'eval' --type sh ~/ # ou $ rg 'eval' -tsh ~/ /Users/bruno/.bash_profile 72:eval "$(thefuck --alias)" /Users/bruno/.zprofile 1:eval "$(/opt/homebrew/bin/brew shellenv)" ... # Recherche partout sauf dans les fichiers shell .bashrc, .zshrc... $ rg 'eval' --type-not sh ~/ # ou $ rg 'eval' -Tsh ~/ ``` ##### Remplacement: ```bash # recherche / remplacement mot pour mot $ rg fast README.md --replace FAST $ rg fast README.md -r FAST # remplacer toute une ligne $ rg '^.*fast.*$' README.md -r FAST ``` ##### Fichier de configuration: ```bash $ cat $HOME/.ripgreprc ```