Création
d'entreprise

Sed - Supprimer une ou plusieurs lignes d'un fichier


Supprimer une (ou plusieurs) ligne(s) d'un fichier


Syntaxe


sed '{[/]<n>|<chaîne>|<regex>[/]}d' <nom_fichier>
sed '{[/]<adr1>[,<adr2>][/]d' <nom_fichier>
  • /.../ = délimiteurs
  • n = le numéro de ligne
  • chaîne = la chaîne contenue dans la ligne
  • regex = l'expression régulière correspondant au motif recherché
  • adr = l'adresse d'une ligne (numéro ou motif)
  • d = delete (effacer)

Exemples


Suppression de la 3ème ligne
sed '3d' mon_fichier.txt
Suppression de la ligne contenant la chaîne "awk"
sed '/awk/d' mon_fichier.txt
Suppression de la dernière ligne
sed '$d' mon_fichier.txt
Suppression de toutes les lignes vides
sed '/^$/d' mon_fichier.txt
sed '/./!d' mon_fichier.txt
Suppression de la ligne "matchée" par une expression régulière
(ici on élimine celle contenant des caractères numérique (au moins 1 chiffre) situés en fin de ligne)
sed '/[0-9/][0-9]*$/d' mon_fichier.txt
Suppression de l'intervalle compris entre les lignes 7 et 9
sed '7,9d' mon_fichier.txt
La même chose mais en remplaçant l'adresse par des "motifs"
sed '/-Début/,/-Fin/d' mon_fichier.txt

Note


Les exemples précédents ne font que modifier l'affichage du fichier (sortie standard 1 = l'écran).
Pour des modifications permanentes, pour les anciennes versions (< 4) utiliser un fichier temporaire, pour GNU sed utiliser le paramètre "-i[suffixe]" (--in-place[=suffixe]), comme dans l'exemple suivant :
sed -i".bak" '3d' mon_fichier.txt
qui aura pour effet, de ne produire aucun affichage sur la sortie standard, de modifier le fichier original "mon_fichier.txt" en supprimant la 3ème ligne et de créer un fichier de sauvegarde nommé "mon_fichier.txt.bak".

---------------------------------------------------


Fichier de référence à utiliser pour les exemples (mon_fichier.txt) :
Introduction
Ceci est un exemple de fichier pour se familiariser avec le filtre "sed".

Présentation

-Début-
 Sed est donc un éditeur de flux (Stream EDitor), issu de l'éditeur de texte "ed", très répandu sous les systèmes Unix.
-Fin-

Utilisation

 La commande la plus utilisée du filtre "sed" est sans conteste la commande de substitution (s), qui sert à remplacer dans chaque ligne la première occurence d'une chaîne1 par celle d'une chaîne2.
 Pour une substitution de toutes les occurences (rencontrées) de chaque ligne il faut utiliser le paramètre "g" (global).

Conclusion

 Le filtre "sed" est sans doute une des commandes les plus usitées en association avec d'autres commandes comme "grep" ou "awk" pour l'écriture de scripts shell.
 La connaissance et la maîtrise des expressions régulières est un plus.
 
-------------------
Édité le 05/01/2007
À 17:00 par JP
Publié par jipicy - Dernière mise à jour le 18 novembre 2009 à 19:52 par marlalapocket
Ce document intitulé « Sed - Supprimer une ou plusieurs lignes d'un fichier » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Suggestions
  •  Sed - Supprimer une ou plusieurs lignes d'un fichier
  •  Sed - Introduction à SED - Part III » Fiches pratiques : SED - The Stream EDitor - Part III Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
  •  Supprimer des champs par lignes d'un fichier » Meilleure réponse: correction awk 'NF == 12 {$6=$5=""} ; NF == 11 {$5=""} ; {print $0}' < fichier
  •  Supprimer des lignes vides dans 1 fichier txt » Meilleure réponse: Salut, Les methode ne manquent pas, la commande sed me semble appropriée :) Selon la version, tu pourra même te passer de fichier temporaire pour faire ça. (-i) Suppression des lignes vide: sed '/^$/d' test >test.tmp mv test.tmp test ou
  •  Sed - Trucs et astuces » Fiches pratiques : Substitution Affichage Suppression Espace et tabulation Ligne vide Intervalle régulier Divers Joindre des lignes Affichage insensible à la casse Substitution Substituer "foo" par "bar" à chaque ligne Seulement la 1ère...
  •  Sed - Numérotation de lignes » Fiches pratiques : Numérotation * Numéroter les lignes (équivalent à "cat -n fichier.txt") sed = fichier.txt L'inconvénient c'est que l'affichage se fait sur 2 lignes. Donc pour palier à ce petit "défaut" sed = fichier.txt | sed 'N;s/\n/\t/' Numéroter les...
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Sed - Substitution