Question 1Comment sed 's/a/X/' f se comporte-t-il sur chaque ligne ?
sed — Substitution et extraction
Pratique sed : 's/a/X/' remplace la première occurrence par ligne et g remplace tout, -n '2p' affiche une ligne précise, '/two/d' supprime les lignes correspondantes, et -i modifie un fichier en place — illustré et en pratique dans un terminal navigateur.
Remplacer du texte — s/old/new/ et g
sed est un éditeur de flux : il lit l'entrée ligne par ligne, la transforme selon les règles que tu lui donnes, et écrit le résultat. L'usage le plus courant est la substitution, écrite sous la forme sed 's/old/new/'. s signifie substitution, / sépare les parties, et il remplace old par new. La partie old accepte aussi les expressions régulières vues précédemment (^ $ . *).
Sans g en fin de motif, s/old/new/ remplace uniquement la première occurrence trouvée sur chaque ligne. En ajoutant g à la fin comme dans s/old/new/g, on remplace toutes les occurrences sur la ligne.
| Forme | Signification | Exemple |
|---|---|---|
s/old/new/ | Remplace uniquement la première occurrence par ligne | sed 's/a/X/' f |
s/old/new/g | Remplace toutes les occurrences sur la ligne | sed 's/a/X/g' f |
g, seule la première occurrence par ligne est modifiée ; avec g, toutes les occurrences de la ligne sont remplacées.printf 'aaa\nbbb\n' > s.txt # créer le fichier source
sed 's/a/X/' s.txt # only the first a -> Xaa
sed 's/a/X/g' s.txt # every a -> XXX
Extraire et supprimer des lignes — -n 'Np' et /pat/d
sed -n 'Np' affiche uniquement la ligne N. Tu indiques le numéro de ligne souhaité à la place de N (pour la ligne 2, 2p). Puisque sed affiche toutes les lignes par défaut, -n désactive cet affichage automatique, et p (print) indique explicitement la ligne à afficher. Ainsi sed -n '2p' ne produit que la deuxième ligne.
sed '/pat/d' supprime les lignes correspondant à pat et affiche le reste. d signifie delete (supprimer), et la partie /pat/ est la condition qui sélectionne les lignes à retirer. Utilise-le quand tu veux éliminer uniquement les lignes contenant un certain mot et voir le reste.
| Forme | Signification | Exemple |
|---|---|---|
-n 'Np' | Afficher uniquement la ligne N | sed -n '2p' f |
/pat/d | Supprimer les lignes correspondant à pat | sed '/two/d' f |
-n 'Np' extrait uniquement la ligne spécifiée, tandis que /pat/d affiche tout sauf les lignes correspondantes.printf 'one\ntwo\nthree\n' > lines.txt # créer le fichier source
sed -n '2p' lines.txt # only line 2, two
sed '/two/d' lines.txt # one and three, without the two line
Modifier un fichier en place — sed -i
Jusqu'ici, sed se contentait d'afficher les résultats à l'écran sans modifier le fichier original. En ajoutant sed -i, on modifie le fichier directement avec le résultat. C'est pratique pour des remplacements en masse dans des fichiers de configuration, mais comme le contenu original n'est pas conservé, après la réécriture, utilise cat pour vérifier le contenu.
| Forme | Signification | Exemple |
|---|---|---|
-i | Modifier le fichier en place | sed -i 's/a/Z/' f |
-i, seul l'affichage à l'écran est produit ; avec -i, le fichier lui-même est réécrit.sed -i est irréversible
sed -i réécrit le fichier en place et ne conserve pas le contenu original. Avant de l'utiliser sur un vrai fichier de configuration, l'approche sûre est de l'exécuter d'abord sans -i, de vérifier le résultat à l'écran, de confirmer que c'est bien ce que tu veux, puis seulement d'ajouter -i.
printf 'apple\nbanana\n' > fruit.txt # créer le fichier source
sed -i 's/apple/cherry/' fruit.txt # edit the file in place
cat fruit.txt # check cherry and banana
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Qu'affiche l'exécution de sed -n '2p' f ?
Question 3Que fait le -i dans sed -i 's/a/Z/' f ?