Sed - Supprimer une ou plusieurs lignes d'un fichier
baissaoui
Messages postés
508
Date d'inscription
Statut
Webmaster
Dernière intervention
-
Document initial créé par jipicy

(ici on élimine celle contenant des caractères numérique (au moins 1 chiffre) situés en fin de ligne)
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 :
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 lignesed '3d' mon_fichier.txtSuppression de la ligne contenant la chaîne "awk"
sed '/awk/d' mon_fichier.txtSuppression de la dernière ligne
sed '$d' mon_fichier.txtSuppression de toutes les lignes vides
sed '/^$/d' mon_fichier.txtSuppression de la ligne "matchée" par une expression régulière
sed '/./!d' mon_fichier.txt
(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.txtSuppression de l'intervalle compris entre les lignes 7 et 9
sed '7,9d' mon_fichier.txtLa 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.txtqui 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