Comment Utiliser La Commande Sed Pour éditer Du Texte ?

La commande Sed est un outil d’édition de texte utilisé pour éditer des fichiers. Il peut être utilisé pour remplacer/supprimer/ajouter du texte dans un fichier. C’est un éditeur de texte non interactif orienté flux. S en Sed représente S orienté tream et la partie « ed » est pour ed iteur.

Une chose importante à noter lorsque vous travaillez avec sed est que le fichier d’entrée d’origine est inchangé et que les résultats sont envoyés vers la sortie standard. Pour rediriger la sortie vers un fichier, l’opérateur de redirection (>) doit être utilisé. Pour apporter des modifications au fichier d’origine (non recommandé), l’indicateur « -i » peut être utilisé.

La commande sed effectue des opérations sur le texte en un seul passage dans le flux, ce qui le rend très efficace.

La commande sed comporte deux parties. Une adresse et une commande. L’adresse précise l’emplacement où la modification doit être effectuée. L’adresse peut être un numéro de ligne, un littéral de chaîne ou même une expression régulière. La partie commande permet de différencier les différentes actions telles que insérer, supprimer, remplacer.

Création D’un Fichier à éditer

Tout d’abord, nous allons commencer par créer un fichier qui sera utilisé tout au long de ce tutoriel pour appliquer les transformations.

€ cat > sortie.txt 

Le texte que nous allons utiliser est :

Les pommes ont un goût sucré. 
Les pommes sont de couleur rouge. L'orange est douce aussi.
L'orange est de couleur orange. La couleur d'un fruit ne peut pas être changée.
Les pommes et les oranges sont saines. L'orange doit être épluchée tandis qu'une pomme peut être consommée sans éplucher.
Les pommes sont parfois de couleur verte. Une orange si verte n'est pas assez mûre pour être mangée.
Les pommes et les oranges poussent sur les arbres. De plus en plus de gens aiment manger des pommes.

C'est à peu près tout pour les pommes et les oranges. 

contenu du fichier

Notez les multiples occurrences de mots comme pommes et oranges.

Remplacer Des Mots

La commande sed peut être utilisée pour rechercher des occurrences de mots particuliers dans le texte et les remplacer. Cela peut être utile si l’orthographe d’un mot est erronée et doit être corrigée.

€ sed 's/couleur/couleur/' output.txt

couleur -> couleur

Cette commande ne remplace que la première occurrence du mot cible dans chaque ligne. Si vous remarquez que dans la troisième ligne, nous avons ‘Couleur’ qui n’est toujours pas remplacée. Ceci pour deux raisons :

  1. La commande que nous avons écrite n’ignore pas la casse des mots. C’est-à-dire qu’il est sensible à la casse.
  2. Même s’il a ignoré la casse, il ne remplacera toujours pas la deuxième instance d’un mot dans une ligne.

Si vous remarquez que les mots « peel » et « peeling » sont mal orthographiés. Nous pouvons les corriger individuellement

€ sed 's/peled/peeled/' output.txt

pelé -> pelé

€ sed 's/peeling/peeling/' output.txt

pelage -> pelage

En les changeant individuellement, on voit que l’autre revient à la version originale. Plus tard, nous verrons comment les expressions régulières peuvent être utilisées pour obtenir le même résultat.

Remplacer Plusieurs Mots

Dans l’exemple précédent, au lieu d’utiliser la commande sed deux fois, nous pouvons utiliser une seule commande combinant les deux.

€ sed -i 's/peled/peeled/;s/peling/peeling/' output.txt

remplacements multiples

Cette commande prend en charge les deux substitutions simultanément. Ici, nous utilisons « -i » pour effectuer la modification dans le fichier d’origine. C’est pourquoi nous devons exécuter une commande cat pour voir le fichier d’origine. Ne confondez pas ce « -i » avec celui qui est utilisé pour faire des substitutions insensibles à la casse (voir l’exemple suivant).

Ignorer La Casse Lors Du Remplacement

sed par défaut est sensible à la casse. Pour ignorer la casse, l’indicateur -i peut être utilisé avec la commande sed.

€ sed 's/pommes/mangue/i' output.txt

pomme -> mangue (en ignorant la casse)

Toutes les premières pommes du monde ont été changées en mangue, quel que soit le cas. Vous pouvez voir que dans l’avant-dernière ligne, nous avons toujours des « pommes » telles quelles. Étant la deuxième instance du mot dans la même ligne, il n’a pas été remplacé.

Remplacer Toutes Les Occurrences

Comme nous l’avons vu ci-dessus, la commande que nous avons utilisée jusqu’à présent ne regarde que la première occurrence de chaque ligne. Pour regarder toutes les instances d’un mot, utilisez -g avec la commande. Jetons un autre coup d’œil à cette deuxième instance de « Couleur » à la ligne 3.

€ sed 's/couleur/couleur/gi' output.txt
  • g s’assure que toutes les instances sont examinées
  • je m’assure que la correspondance est insensible à la casse

à la fois la couleur -> la couleur

Agréable! les deux instances du mot color ont été changées en color à la ligne 3.

Remplacement De L’occurrence Sélective

Supposons maintenant que nous voulions simplement changer la deuxième occurrence d’un mot dans chaque ligne. Cela signifierait de ne changer que la deuxième occurrence de ‘couleur’ à la ligne 3.

€ sed 's/couleur/couleur/2i' output.txt

couleur deuxième occurrence à la ligne 3

Dans la sortie, la seule occurrence de couleur à la ligne 2 et la première occurrence à la ligne 3 sont laissées telles quelles. La deuxième occurrence de la ligne #3 a été remplacée par ‘color’. Il en est de même pour l’avant-dernière ligne.

Ajouter Une Ligne Après Chaque Ligne

Parfois, il est agréable d’espacer chaque ligne du fichier. Cela peut être fait en utilisant ‘G’ avec la commande sed.

€ sed G output.txt

sed G

Comme on peut le voir, une ligne a été ajoutée après chaque ligne de texte.

Remplacement Des Mots Dans Les Lignes Sélectives

Nous pouvons mentionner des lignes spécifiques sur lesquelles exécuter l’outil d’édition sed. Cela ne ferait que faire les changements dans les lignes mentionnées explicitement et ignorerait le reste.

€ sed '2,4 s/Pommes/mangue/' output.txt

remplacer les pommes par la mangue dans les lignes 2 à 4

On voit que seules les lignes 2 à 4 ont été modifiées. Comme nous n’avons pas mentionné g, seules les premières occurrences ont été modifiées.

Impression Des Lignes Sélectionnées

La commande sed peut être utilisée pour afficher des lignes particulières du fichier.

€ sed -n '2,5p' sortie.txt

lignes d’impression 2 à 5

Supprimer Les Lignes Sélectionnées

La commande sed peut être utilisée pour supprimer certaines lignes lors de l’affichage. La commande ne supprime pas les lignes du fichier réel, mais ne les affiche tout simplement pas lorsque la commande est exécutée.

€ sed '2,5d' sortie.txt

suppression des lignes 2 à 5

Cela n’affectera pas le fichier d’origine, alors pensez-y comme une autre façon d’afficher sélectivement un fichier. Pour enregistrer la sortie dans un autre fichier, nous pouvons utiliser l’opérateur de redirection. Nous verrons cela par la suite.

Enregistrement De La Sortie Sed Dans Un Fichier

Les modifications apportées via la commande sed ne sont visibles qu’en tant que sortie sur la ligne de commande. Ces sorties ne sont pas enregistrées et les modifications ne sont pas reflétées dans le fichier d’origine. Pour enregistrer les modifications apportées à un fichier, l’opérateur de redirection (>) peut être utilisé.

€ sed '2,5d' output.txt > nouveau_fichier.txt

enregistrement de la sortie dans new_file.txt

Notez que si new_file.txt n’existe pas, cette commande créera le fichier puis y écrira la sortie. Le fichier serait créé dans le répertoire de travail actuel.

Affichage De Plusieurs Lignes Consécutives

Tout comme pour effectuer plusieurs substitutions dans la même commande, sed peut être utilisé pour afficher plusieurs lignes consécutives dans une seule commande.

€ sed -n -e '2,3p' -e '5,6p' sortie.txt 

afficher les lignes 2 à 3 et 5 à 6

Les lignes 2 à 3 et les lignes 5 à 6 sont affichées.

Imprimer Des Lignes Contenant Un Mot Particulier

La commande sed peut être utilisée pour imprimer des lignes contenant un certain mot ou un motif.

€ sed -n /couleur/p sortie.txt

Cette commande imprime toutes les lignes contenant le mot ‘couleur’.

€ sed -n /Couleur/p sortie.txt

Sortie avec motif sélectionné

Comme nous n’avons pas utilisé -i avec la commande sed, les deux commandes donneront des sorties différentes.

Utiliser Des Expressions Régulières

La commande sed peut être utilisée avec des expressions régulières pour rechercher des modèles. Les expressions régulières sont utilisées pour spécifier certaines règles qui peuvent être utilisées pour faire correspondre le texte et rechercher des modèles.

€ sed 's/color/color/g'output.txt

Couleur à colorier à l’aide de Reg Ex

Cela résout le problème de l’appariement de la couleur et de la couleur car nous avons spécifié une expression régulière pour la couleur qui correspond aux deux occurrences.

Substitution RegEx Avancée

Plus tôt, nous avons vu comment nous avons remplacé pelé par pelé et pelé par pelé. Essayons de le faire par expression régulière. Nous allons créer une expression régulière qui changera de pelure en pelure et le reste du mot tel qu’il est. Cela peut être utile si le même mot est utilisé sous plusieurs formes telles que passé, présent ou futur.

L’expression régulière identifie à la fois le pelage et le pelage et les corrige. Comprenons l’expression régulière.

Les barres obliques inverses sont utilisées pour échapper des caractères comme des parenthèses, sans lesquelles l’expression ressemblerait à :

carillonner()(.*]) 
  • Peal correspond aux quatre premières lettres du mot.
  • .* correspond à zéro ou plus de points, utilisé comme point. Utilisé pour le pelage puisqu’il se produit à la fin.
  • ] correspond à l’espace après un mot. Utilisé pour pelé.
  • (.*]) est référencé par 2.

Du côté des remplaçants on a :

peler\1\2

La barre oblique inverse est utilisée pour échapper les caractères numériques. Ici, peler est suivi de la référence 1 du motif correspondant qui est soit « ed » soit « ing ». Suivi de 2 qui est soit un espace, soit un point. Cette expression régulière réalise avec succès la transformation suivante :

  • peler. -> épluchage.
  • pelé -> pelé

Conclusion

La commande sed ainsi que les expressions régulières peuvent être utilisées pour une édition de texte très puissante. En savoir plus sur les expressions régulières ici. Nous n’avons couvert que la brève applicabilité de la commande sed. Pour en savoir plus sur sed, référez-vous à ceci.

Linux Mint 17.2 “Rafaela”
  • Update Manager, It shows more information, it looks better, it feels faster, and...
  • Driver Manager, The Driver Manager is now able to install drivers without a...
  • Login Screen, Multi-monitor support was improved:
  • Language Settings, A new "Language Settings" tool was introduced. It replaces...
  • Menu Improvements, The menu applet received two mintMenu features: Right-click...
Site Athletics A Real Professional in Linux 1 Guaranteed 2 Hoodie Dark Silver
  • Good hoodie with good standards of quality.
  • Wash Cold, Dry Low.
  • The final product is made of 100% cotton.
  • This is a very comfortable hoodie to wear and also perfect as a gift to your...
  • High printing quality as well.
Linux Academy
  • Complete Linux Academy Courses!
  • Save videos for offline viewing!
  • Use notecards to increase learning!
  • English (Langue de Publication)
Promo
Linux All-in-One For Dummies
  • English (Langue de Publication)
  • Éditeur: For Dummies
Promo
The Linux Programming Interface: A Linux and UNIX System Programming Handbook
  • No Starch Press
  • Hardcover Book
  • English (Langue de Publication)
  • Éditeur: No Starch Press
UNIX and Linux System Administration Handbook (5th Edition)
  • English (Langue de Publication)
  • Éditeur: Addison-Wesley Professional
Linux
  • English (Langue de Publication)
  • Éditeur: QuickStudy
Promo
The Linux Command Line, 2nd Edition: A Complete Introduction
  • English (Langue de Publication)
  • Éditeur: No Starch Press