Sed, abréviation de Stream EDitor, est une commande utilisée pour effectuer des transformations et des manipulations de texte sur un fichier. Certaines de ces transformations incluent la recherche et le remplacement de texte. Avec la commande Linux sed, vous pouvez manipuler et éditer des fichiers texte sans même les ouvrir. Dans ce didacticiel, vous apprendrez à manipuler des fichiers texte à l'aide de la commande sed.
Syntaxe de la commande Linux sed
$ sed {OPTIONS} filename
Dans ce tutoriel, nous utiliserons linuxgeek.txt
file comme notre fichier de référence.
# cat linuxgeek.txt
Sortie
1. Substituer ou remplacer une chaîne
Dans la plupart des cas, la commande sed est utilisée pour remplacer des chaînes de texte.
La commande ci-dessous remplace ‘Linux ‘ avec ‘Unix ‘.
# sed 's/Linux/Unix/' linuxgeek.txt
- Les
s
dans la commande se trouve l'indicateur de remplacement. - Le
/
sont les délimiteurs Linux
est le terme de rechercheunix
est le terme de remplacement
Par défaut, la commande sed remplace uniquement la première occurrence d'une ligne . Les occurrences suivantes ne seront pas substituées ou remplacées.
Sortie
2. Substituer ou remplacer la nième occurrence dans une ligne
Si vous souhaitez remplacer la deuxième occurrence de chaîne dans une ligne, utilisez le /2
drapeau comme indiqué.
# sed 's/Linux/Unix/2' linuxgeek.txt
Sortie
3. Substituer ou remplacer toutes les occurrences du motif dans un fichier
Pour remplacer toutes les occurrences du motif de recherche dans le fichier, utilisez le /g
drapeau. Le /g
est le remplacement global.
# sed 's/Linux/Unix/g' linuxgeek.txt
Sortie
4. Substituer ou remplacer toutes les occurrences d'une chaîne dans une ligne spécifique uniquement
Si vous souhaitez remplacer toutes les occurrences d'une chaîne dans une ligne spécifique, par exemple dans la ligne 2, utilisez la syntaxe ci-dessous
# sed '2 s/Linux/Unix/g' linuxgeek.txt
Sortie
5. Substituer ou remplacer une chaîne dans une plage de lignes spécifique
Si vous souhaitez spécifier la plage de lignes où le remplacement de chaîne se produira, utilisez l'exemple ci-dessous. L'exemple indique que le remplacement doit se produire à partir des lignes 1 à 3
# sed '1,3 s/Linux/Unix/g' linuxgeek.txt
Sortie
De plus, vous pouvez remplacer le texte d'une ligne spécifique à la fin du fichier comme indiqué
# sed '2,$ s/Linux/Unix/g' linuxgeek.txt
Ce que fait la commande, c'est qu'elle remplace toutes les occurrences de la 2ème ligne à la dernière ligne du fichier.
Sortie
6. Entre parenthèses le premier caractère de chaque mot
L'exemple ci-dessous montre comment vous pouvez mettre des parenthèses sur chaque premier caractère d'un mot dans une ligne.
$ echo "Hey Guys, Welcome To Linux Operating System" | sed 's/\(\b[A-Z]\)/\(\1\)/g'
Sortie
7. Supprimer des lignes d'un fichier
Vous pouvez également utiliser la commande linux sed pour supprimer des lignes dans un fichier.
Exemples
Syntaxe :
$ sed 'nd' filename.txt
Pour supprimer la 3ème ligne du fichier exécutez
$ sed '3d' linuxgeek.txt
Sortie
Pour supprimer une plage de lignes, disons de la ligne 3 à la ligne 5 , exécutez la commande :
$ sed '3,5d' linuxgeek.txt
Sortie