Introduction à Sed
sed
(éditeur de flux) est un outil puissant pour analyser et transformer le texte. Il est souvent utilisé pour effectuer des modifications automatiques sur des fichiers ou des flux de sortie. Commençons par quelques opérations de base avec sed
.
Tout d'abord, créez un nouveau fichier sur lequel travailler :
echo -e "Hello, world\nThis is a test\nHello, labex\nWorld of Linux" > sed_test.txt
Cela crée un fichier nommé sed_test.txt
dans votre répertoire actuel avec quatre lignes de texte.
Maintenant, utilisons sed
pour remplacer du texte :
sed 's/Hello/Hi/' sed_test.txt
Cette commande remplace la première occurrence de "Hello" par "Hi" sur chaque ligne. Par défaut, sed
ne remplace que la première correspondance sur chaque ligne.
Remarque : Dans cet exemple, comme "Hello" n'apparaît qu'une seule fois par ligne, il semble que toutes les occurrences sont remplacées même sans le drapeau g
.
Pour mieux comprendre l'effet du drapeau g
, modifions sed_test.txt
de sorte qu'il y ait plusieurs occurrences de "Hello" sur la même ligne :
echo -e "Hello, world. Hello everyone\nThis is a test\nHello, labex says Hello\nWorld of Linux" > sed_test.txt
Maintenant, le contenu de sed_test.txt
est :
Hello, world. Hello everyone
This is a test
Hello, labex says Hello
World of Linux
Exécutez à nouveau la commande de remplacement sans le drapeau g
:
sed 's/Hello/Hi/' sed_test.txt
La sortie sera :
Hi, world. Hello everyone
This is a test
Hi, labex says Hello
World of Linux
Vous pouvez voir que seul le premier "Hello" de chaque ligne est remplacé.
Maintenant, effectuons un remplacement global en utilisant le drapeau g
:
sed 's/Hello/Hi/g' sed_test.txt
La sortie sera :
Hi, world. Hi everyone
This is a test
Hi, labex says Hi
World of Linux
Cette fois, toutes les occurrences de "Hello" sur chaque ligne sont remplacées par "Hi".
Explication :
sed 's/Hello/Hi/'
: Remplace le premier "Hello" correspondant sur chaque ligne.
sed 's/Hello/Hi/g'
: Remplace tous les "Hello" correspondants sur chaque ligne.
- Le drapeau
g
signifie "global", indiquant que la substitution doit être effectuée pour chaque occurrence dans la ligne.
Notez que ces commandes ne modifient pas le fichier lui-même ; elles n'affichent que le texte modifié dans le terminal. Pour modifier le fichier en place, utilisez l'option -i
:
sed -i 's/Hello/Hi/g' sed_test.txt
Maintenant, vérifiez le contenu du fichier pour voir les modifications :
cat sed_test.txt