Unix / Linux - Expressions régulières avec SED

Salut à toi, futurs magiciens de la ligne de commande ! Aujourd'hui, nous plongeons dans le monde magique des expressions régulières (regex) et de la puissante commande SED sous Unix/Linux. Attachez vos ceintures, car nous allons entreprendre une aventure palpitante qui va transformer la manière dont vous manipulez du texte !

Unix / Linux - Regular Expressions

Appel de sed

Commençons par les bases. SED, qui signifie "Stream Editor", est un outil de traitement de texte puissant. Pour l'utiliser, nous tapons simplement "sed" suivi de nos commandes. C'est comme invoquer un génie manipulateur de texte !

sed 'commande' nomdefichier

Par exemple :

sed 's/hello/bonjour/' salutations.txt

Cette commande remplace "hello" par "bonjour" dans le fichier salutations.txt. Simple, n'est-ce pas ?

Syntaxe générale de sed

La syntaxe générale de sed est comme un sortilège magique :

sed OPTIONS... [SCRIPT] [FICHIER...]

Ne vous inquiétez pas si cela paraît intimidant. Nous allons le démonter morceau par morceau, comme résoudre un puzzle amusant !

Supprimer toutes les lignes avec sed

Vous souhaitez faire disparaître tout le texte d'un fichier ? Sed peut le faire ! Voici comment :

sed 'd' nomdefichier

Cela supprime toutes les lignes du fichier. C'est comme utiliser une gomme sur votre carnet numérique !

Adresses de sed

Les adresses dans sed sont comme des coordonnées GPS pour votre texte. Elles indiquent à sed où effectuer son magie. Voici quelques exemples :

sed '2d' fichier.txt  # Supprime la 2ème ligne
sed '/motif/d' fichier.txt  # Supprime les lignes contenant 'motif'

Plage d'adresses de sed

Parfois, nous voulons jeter notre sort sur une plage de lignes. Voici comment :

sed '2,5d' fichier.txt  # Supprime les lignes 2 à 5
sed '2,$d' fichier.txt  # Supprime de la ligne 2 à la fin du fichier

Commande de substitution

La commande de substitution est la spécialité de sed. C'est comme "trouver et remplacer" sur stéroïdes !

sed 's/ancien/nouveau/' fichier.txt

Cela remplace la première occurrence de "ancien" par "nouveau" sur chaque ligne.

Fanions de substitution

Les fanions sont comme des power-ups pour vos commandes de substitution. Voici un tableau des fanions courants :

Fanion Description
g Remplacer toutes les occurrences, pas seulement la première
i Ignorer la casse
p Imprimer la ligne modifiée
w Écrire le résultat dans un fichier

Exemple :

sed 's/chat/chien/g' animaux.txt

Cela remplace toutes les occurrences de "chat" par "chien".

Utilisation d'un séparateur de chaîne alternatif

Parfois, votre texte contient beaucoup de barres obliques. Pas de souci ! Nous pouvons utiliser des séparateurs différents :

sed 's#/usr/local/bin#/common/bin#' chemins.txt

Ici, nous utilisons '#' comme notre séparateur au lieu de '/'.

Remplacement par un espace vide

Vous souhaitez faire disparaître du texte sans laisser de trace ? Voici comment :

sed 's/indésirable//g' fichier.txt

Cela supprime toutes les occurrences de "indésirable" du fichier.

Substitution d'adresses

Nous pouvons combiner des adresses avec une substitution pour une chirurgie textuelle précise :

sed '3,6s/foo/bar/g' fichier.txt

Cela remplace toutes les occurrences de "foo" par "bar", mais seulement sur les lignes 3 à 6.

Commande de correspondance

La commande de correspondance est comme un projecteur, éclairant les lignes qui nous intéressent :

sed -n '/motif/p' fichier.txt

Cela imprime uniquement les lignes contenant "motif".

Utilisation des expressions régulières

Maintenant, nous entrons dans la véritable magie ! Les expressions régulières sont comme des jokers sur stéroïdes. Voici un exemple simple :

sed -n '/^The/p' histoire.txt

Cela imprime toutes les lignes commençant par "The".

Correspondance de caractères

Les expressions régulières ont des caractères spéciaux qui agissent comme des métamorphes :

Caractère Signification
. Tout caractère simple
* Zéro ou plusieurs occurrences du caractère précédent
^ Début de ligne
$ Fin de ligne

Exemple :

sed -n '/c.t/p' animaux.txt

Cela correspond à "cat", "cot", "cut", etc.

Mots-clés de classes de caractères

Les classes de caractères sont comme des équipes de caractères. Voici quelques joueurs MVP :

Classe Correspond à
[:alpha:] Caractères alphabétiques
[:digit:] Caractères numériques
[:alnum:] Caractères alphanumériques

Exemple :

sed -n '/[[:digit:]]/p' données.txt

Cela imprime les lignes contenant n'importe quel chiffre.

Référencement avec le symbole et

L'ampersand (&) est comme un miroir magique, reflétant ce qui a été correspondu :

sed 's/[0-9]/(&)/' nombres.txt

Cela met des parenthèses autour de chaque chiffre.

Utilisation de plusieurs commandes sed

Vous souhaitez lancer plusieurs sorts en une fois ? Utilisez l'option -e :

sed -e 's/foo/bar/g' -e 's/baz/qux/g' fichier.txt

Cela effectue deux substitutions en un seul coup !

Références arrières

Les références arrières sont comme des machines à temps, nous permettant de réutiliser des parties de la correspondance :

sed 's/\(.*\):\([^:]*\)/\2:\1/' noms.txt

Cela échange le texte avant et après un deux-points.

Et voilà, mes chers élèves ! Nous avons voyagé à travers le pays de sed et des expressions régulières. Souvenez-vous, la pratique rend parfait. Alors, allaitez et manipulez le texte comme les sorciers de la ligne de commande que vous devenez ! Bon codage !

Credits: Image by storyset