Si vous êtes même un utilisateur occasionnel de Linux, vous savez probablement comment utiliser grep. Même si vous n’êtes pas un gourou des expressions régulières, il est facile d’utiliser grep pour rechercher des lignes dans un fichier qui correspondent à tout, des chaînes simples aux modèles complexes. Bien sûr, grep est parfait pour la recherche, mais que faire si vous voulez trouver des choses et les changer. Peut-être voulez-vous changer chaque instance de «HackADay» en «Hackaday», par exemple. Vous pourriez utiliser sed, mais il est un peu difficile à utiliser. Vous pourriez utiliser awk, mais en tant que langage à usage général, il semble un peu exagéré pour une tâche aussi simple et courante. C’est l’idée derrière ripgrep qui a en fait le nom de la commande rg. En utilisant rg, vous pouvez faire des choses que grep peut faire en utilisant des expressions régulières plus modernes et aussi faire des remplacements.

Une note sur l’installation de Ripgrep

Votre meilleur pari est d’obtenir ripgrep de vos référentiels. Lorsque j’ai essayé d’exécuter KDE Neon, cela m’a utilement dit que je pouvais installer une version en utilisant apt ou prendre une version Snap plus récente. Je déteste généralement installer un composant logiciel enfichable, mais je l’ai fait quand même. Il m’a informé que je devais ajouter –classic à la ligne d’installation car ripgrep pouvait affecter les fichiers en dehors du sandbox Snap. Étant donné que tout le but du programme est de modifier les fichiers, je n’ai pas trouvé cela trop surprenant, alors j’ai fait l’installation.

Utilisation simple

Si vous souhaitez utiliser rg en tant que grep, allez-y. Une mise à niveau rafraîchissante est qu’elle génère des numéros de ligne lors de l’impression sur stdout:

Si vous ne voulez pas les numéros de ligne, utilisez l’option -N. Vous pouvez également spécifier un remplacement avec -r:

Supposons cependant que vous vouliez créer un nouveau fichier avec le remplacement. Dans ce cas, envoyez le --passthru option pour que toutes les lignes soient envoyées même si elles ne correspondent pas.

Inversement, vous souhaiterez peut-être imprimer uniquement les parties qui correspondent et non la ligne entière. le -o option fera cela. Vous pouvez également utiliser de nombreuses options de type grep. Par exemple, -v inversera la correspondance afin que seules les lignes qui ne correspondent pas s’impriment.

Écraser

L’un des problèmes classiques du multitâche Linux est d’essayer d’écraser un fichier. Par exemple, essayez ceci:


cd /tmp
cp /etc/fstab test.txt
cat test.txt  # plenty of stuff there
cat test.txt > test.txt
cat test.txt  # oops, the file is now empty

Ceci est un cas d’utilisation courant pour rg, bien que. Bien sûr, vous pouvez envoyer la sortie vers un fichier temporaire, puis remplacer le fichier d’origine par le fichier temporaire. Mais cela semble inélégant. Un utilitaire appelé sponge est une manière plus soignée de le faire. Sponge copie son entrée standard dans un fichier, mais il attend qu’il n’y ait plus d’entrée avant de le faire. Remplacez la deuxième ligne ci-dessus par:


cat test.txt | sponge test.txt

Donc, pour faire un remplacement dans un fichier, vous pouvez utiliser quelque chose comme:


rg --passthrough 'Jen' -r 'Jennifer' invite.txt | sponge invite.txt

Les saveurs

Par défaut, rg utilise des expressions régulières de Rust. Ceux-ci sont connus pour être rapides, mais ont certaines limitations au nom de la performance. Vous pouvez utiliser le -P option pour sélectionner les expressions régulières PCRE2 qui ont plus de fonctionnalités mais peuvent être plus lentes. Une autre option consiste à utiliser --engine=auto. Cela amènera rg à utiliser des expressions Rust à moins que vous ne sembliez utiliser des fonctionnalités qui nécessitent PCRE2. Si vous fournissez plusieurs expressions, elles utiliseront toutes le même moteur d’expression, donc toute expression PCRE2 forcera l’utilisation de ce moteur.

Avec le moteur PCRE2, vous pouvez effectuer des recherches, des références inversées, etc. Si vous ne parvenez pas à citer des expressions régulières lorsque vous souhaitez simplement trouver du texte, vous apprécierez le -F option. Cela fait que l’expression de recherche est une chaîne ordinaire:

Il existe de nombreuses autres options. Essaie le --help option pour les voir tous. Vous pouvez faire correspondre les lignes, faire correspondre les fichiers binaires, utiliser CRLF comme terminateur de ligne, afficher les lignes de contexte ou filtrer chaque fichier via un programme externe.

Boîte à outils

C’est l’un de ces outils simples dont vous pouvez certainement vous passer, mais il est beaucoup plus agréable de faire de nombreuses tâches courantes avec lui que sans lui. Bien sûr, pour tirer le meilleur parti de tout outil de type grep, vous devez vraiment connaître les expressions régulières. Si vous voulez une manière amusante d’apprendre les expressions régulières, essayez un jeu de mots croisés.

LAISSER UN COMMENTAIRE

Rédigez votre commentaire !
Entrez votre nom ici