Accueil > Linux > Lignes de commandes > sed
sed
Publié le 27 janvier 2023, dernière mise-à-jour le 14 décembre 2025, > 29 visites, >> 186547 visites totales.
sed permet de manipuler les contenus de fichiers
Pour essayer les commander sur un fichier , taper cat ( ou head, tail ) fichier |sed ...
Pour appliquer le changement au fichier, taper sed .... -i fichier
ATTENTION : l’utilisation de la guillemet simple ou double change les résultats.
La fonction de substitution s
sed "s/toto/TOTO/" : remplace toto par TOTO
sed "s/toto/TOTO/3" : remplace le 3ème toto par TOTO
sed "s/toto/TOTO/g" : remplace tous les toto par TOTO
sed "s/toto/TOTO/p" : remplace tous les toto par TOTO
sed "s#b#uu#w /tmp/hh" : remplace b par uu et écrit la ligne changée dans /tmp/hh
sed "s#b#uu#w /tmp/hh" : remplace tous les b par uu et écrit la ligne changée dans /tmp/hh
La fonction de suppression d
sed "1,2d" fichier : supprime les lignes 1 à 2 comprises
sed '1,2!d' fichier : supprime tous les lignes sauf 1 à 2 comprises
sed "/b/d" fichier : supprime les lignes contenant b
sed '/b/l' fichier : affiche les lignes avec les caractères de contrôle ( par exemple $ à la fin de la ligne contenant b mais pas \n )
Les fonctions q, r et w
La fonction q (quit) va interrompre l’exécution de sed, la ligne en cours de traitement est affichée sur la sortie standard (uniquement si -n n’a pas été utilisée).
La fonction r (read) lit le contenu d’un fichier et écrit le contenu sur la sortie standard.
La fonction w (write) écrit la ligne sélectionnée dans un fichier.
Les fonctions a et i
La fonction a (append) va placer un texte après la ligne sélectionnée.
sed '/b/a45' fichier ajoute une ligne 45 après la ligne contenant b
La fonction i (insert) va placer un texte avant la ligne sélectionnée
sed '/b/i45' fichier ajoute une ligne 45 avant la ligne contenant b
sed -f fichier_sed fichier
utilise les commandes du fichier_sed
séparer deux commandes : ;
cat fichier |sed '=;iblah'
1
blah
aaaa
2
utiliser la ligne suivante au motif :n
cat fichier2|sed -e '/fichier2ligne1/{n; s/i/A/g}'
fichier2ligne1
fAchAer2lAgne2
ajouter la ligne suivante au motif : N
cat fichier2|sed -e '/fichier2ligne1/{N; s/i/A/g}'
fAchAer2lAgne1
fAchAer2lAgne2
substitution :s
- substitution du deuxième i :
echo fichier |sed 's/i/A/2'
fichAer
numéroter les lignes : =
cat fichier |sed '='
1
aaaa
2
...
ajouter du texte avant chaque ligne : i
cat fichier |sed 'iblah'
blah
aaaa
blah
...
ajouter du texte après chaque ligne : a
cat fichier |sed 'ablah'
aaaa
blah
bbbb
...
ajouter fichier2 après chaque ligne : r
cat fichier |sed 'rfichier2'
aaaa
fichier2ligne1
fichier2ligne2
bbbb
ajouter fichier2 ligne par ligne après chaque ligne : R
cat fichier |sed 'Rfichier2'
aaaa
fichier2ligne1
bbbb
fichier2ligne2
enlever les lignes vides d’un fichier
sed -i '/^$/d' b1.md5
Remplacer les fins de lignes par #
sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/#/g' fichier : ne remplace pas la dernière ligne
while read line; do printf "%s" "$line#"; done < fichier :remplace aussi la dernière ligne
while read line; do echo -n "$line#"; done < fichier :remplace aussi la dernière ligne
Internet - Réseaux