Thème Jannah La licence n'est pas validée, Rendez-vous sur la page des options du thème pour valider la licence, Vous avez besoin d'une seule licence pour chaque nom de domaine.

Les meilleures façons d'utiliser la commande Sed pour modifier du texte sous Linux

9 façons de modifier du texte à l'aide de la commande sed sous Linux

Commande sed Sur les systèmes Linux, sed est un outil puissant utilisé par les administrateurs système et les développeurs pour une édition de texte rapide et flexible. Que vous souhaitiez remplacer des mots dans un fichier, supprimer des lignes spécifiques ou modifier du texte en bloc, sed propose des raccourcis clavier puissants qui simplifient le travail avec les fichiers texte. Apprendre à utiliser correctement cette commande vous aidera à accomplir des tâches complexes avec les commandes les plus simples. Dans cet article, nous passons en revue les principales méthodes pratiques d'utilisation de sed, avec des exemples concrets pour une application directe.

Les meilleures façons d'utiliser la commande sed pour éditer du texte sous Linux

Sed, l'éditeur de flux, est l'un des outils d'édition de texte les plus populaires sous Linux. Sans interface, il exécute les opérations de manière fluide et silencieuse, directement depuis la ligne de commande. Des corrections rapides aux transformations de texte avancées, voici neuf façons dont Sed simplifie l'édition.

1. Rechercher et remplacer du texte (de base et guidé)

Le remplacement de texte est l'utilisation la plus courante de sed. Je l'utilise souvent lorsque je travaille sur des fichiers volumineux dans un terminal, car je ne souhaite pas ouvrir un éditeur de texte distinct uniquement pour rechercher et remplacer du texte. Exécuter sed directement depuis le terminal augmente non seulement mon efficacité et ma rapidité, mais m'offre également davantage d'options de personnalisation que la boîte de dialogue classique de recherche et remplacement.

La structure de base de la recherche et du remplacement de texte est simple.

fichier sed 's/old/new/'.txt

Recherche et remplacement de contenu à l'aide de la commande Sed : les meilleures façons d'utiliser la commande Sed pour modifier du texte sous Linux

Ici, la commande s signifie remplacer, ancien est le texte que vous recherchez (comme Flameshot dans mon cas), et nouveau est le texte par lequel vous souhaitez le remplacer (comme Gradia).

Par défaut, la commande sed remplace uniquement la première occurrence de chaque ligne. Cependant, dans de nombreux cas, vous devrez remplacer toutes les occurrences du mot cible. Pour ce faire, ajoutez le g à la fin :

fichier sed 's/old/new/g'.txt

Désormais, chaque occurrence dans chaque ligne sera remplacée.

Vous pouvez également remplacer du texte sur une ligne spécifique en spécifiant le numéro de ligne avant l'option s :

sed '10s/ancien/nouveau/' fichier.txt

Cette commande remplace l'ancien texte par le nouveau texte à la ligne 10 uniquement. De même, vous pouvez remplacer du texte sur plusieurs lignes en spécifiant les deux numéros de ligne, séparés par une virgule, avant la balise s :

sed '10,20s/ancien/nouveau/' fichier.txt

En plus des remplacements spécifiques à une ligne, vous pouvez être plus sélectif en indiquant à sed d'agir uniquement si une ligne correspond à un certain modèle :

sed '/ERROR/s/old/new/g' fichier.txt

Recherche et remplacement d'une ligne spécifique uniquement en fonction de modèles. Les meilleures façons d'utiliser la commande Sed pour éditer du texte sous Linux

De cette façon, la commande sed remplace uniquement le texte sur les lignes qui correspondent au modèle (comme error dans ce cas) tout en laissant le reste inchangé.

2. Insérer, ajouter et supprimer du contenu

Lorsque je travaille avec des fichiers, j'effectue souvent trois tâches : insérer, ajouter et supprimer du contenu. Grâce à la commande sed, je peux gérer ces trois tâches de manière fluide et efficace sans avoir à ouvrir le fichier dans un éditeur.

Lisez aussi:  Les meilleures applications Linux gratuites à essayer dès maintenant

Commençons par l'insertion. La commande sed vous permet d'ajouter du contenu n'importe où dans le fichier, avant ou après une ligne spécifique. Par exemple, si vous travaillez sur un fichier de configuration et souhaitez ajouter un nouveau paramètre avant la troisième ligne, vous pouvez utiliser la balise i :

sed '3i\
# Nouveau paramètre\
ENABLE_FEATURE=true' config.conf

Les meilleures façons d'utiliser la commande sed pour éditer du texte sous Linux

De même, si vous souhaitez que le texte apparaisse après la ligne 10, remplacez simplement i par a :

sed '3a\
Texte ajouté' file.txt

La façon la plus simple de s’en souvenir est de penser à « i » comme « insérer » avant et à « a » comme « ajouter » après.

Il est parfois plus simple de remplacer une ligne entière plutôt que d'en modifier des parties. Par conséquent, utilisez l'option c. Par exemple, si vous disposez d'un fichier de propriétés avec un numéro de version et que vous souhaitez le mettre à jour, vous pouvez remplacer la ligne entière :

sed '/^version=/c\version=2.0.0' config.conf

Cette commande supprime l'ancienne ligne et écrit la nouvelle ligne à sa place.

Remplacer une ligne spécifique à l'aide de la commande Sed : les meilleures façons d'utiliser la commande Sed pour modifier du texte sous Linux

Si vous souhaitez supprimer une ligne entière sans rien ajouter de nouveau, utilisez l'option d :

fichier sed '3d'.txt

Cela supprime la ligne 3. De plus, vous pouvez également couper un bloc de lignes en spécifiant une plage comme ceci :

fichier sed '5,10d'.txt

Cela supprime les lignes 5 à 10.

Comme mentionné précédemment, lorsque nous avons utilisé la correspondance de motifs pour rechercher et remplacer du contenu, nous pouvons également utiliser sed pour supprimer des données en fonction de ces motifs. Par exemple, si un fichier journal contient des milliers d'entrées DEBUG, vous pouvez toutes les supprimer simultanément :

sed '/DEBUG/d' fichier journal.txt

Ces commandes peuvent sembler intimidantes au début, mais une fois que vous aurez commencé à les utiliser, vous serez en mesure d'effectuer rapidement ces opérations de base en quelques frappes de touches.

3. Afficher et extraire le contenu

Par défaut, la commande sed affiche chaque ligne traitée, ce qui peut être fastidieux, notamment avec les journaux ou les fichiers de configuration. Pour contrôler cela, nous utilisons l'option -n, qui force sed à rester silencieux, sauf demande explicite d'affichage. En associant cette option à la commande p (impression), nous contrôlons totalement l'affichage.

Par exemple, pour imprimer la cinquième ligne d’un fichier spécifié, utilisez :

sed -n fichier '5p'.txt
Les meilleures façons d'utiliser la commande sed pour éditer du texte sous Linux
Vous pouvez également spécifier des plages de lignes spécifiques. Par exemple, pour imprimer les lignes 15 à 20, exécutez :
sed -n fichier '15,20p'.txt

De même, si vous recherchez un mot ou un modèle spécifique, comme des erreurs enfouies dans des milliers de lignes, utilisez ceci :

sed -n '/ERROR/p' fichier.txt

Ici, la commande sed recherche toute ligne contenant le mot ERROR et affiche uniquement ces lignes. Cette méthode est similaire à l'exécution de grep, mais directement dans la commande sed, ce qui est utile pour lier plusieurs processus.

Une autre utilisation efficace consiste à extraire des fragments de texte entre deux balises. Imaginez que vous déboguez le registre système et que vous ne souhaitez extraire que le fragment compris entre START et END :

sed -n '/START/,/END/p' fichier.txt

Ce discriminateur intelligent extrait tout ce qui se trouve entre les mots-clés. Pour inverser la correspondance, utilisez simplement l'option ! comme suit :

sed -n '/ERROR/!p' fichier journal.txt

Cela imprime toutes les lignes sauf celles contenant une erreur, vous permettant de vous concentrer sur le résultat final et d'ignorer le bruit.

4. Modifier les fichiers sur place à l'aide des options de sauvegarde

La commande sed est entièrement sécurisée : elle affiche uniquement les résultats dans le terminal, laissant vos fichiers d'origine intacts. Cependant, vous pourriez souhaiter apporter des modifications permanentes ultérieurement. L'option -i vous permet de modifier le fichier directement :

sed -i 's/old/new/g' fichier.txt

Cette option remplace chaque ancienne version par une nouvelle directement dans votre fichier texte. Pas de redirection, pas de fichiers supplémentaires, juste une mise à jour instantanée. Mais voici le hic : le fichier est immédiatement remplacé, sans bouton d'annulation.

Lisez aussi:  Une expérience unique pour la dernière distribution Unix Retro

Pour créer une sauvegarde du fichier d'origine, utilisez -i avec le suffixe de sauvegarde :

sed -i.bak 's/old/new/g' fichier.txt

Désormais, sed crée une copie du fichier original sous le nom file.txt.bak avant toute modification. En cas d'erreur, vous pouvez rapidement l'annuler. Vous pouvez également choisir des extensions personnalisées :

sed -i.backup 's/temporary/permanent/g' fichier.txt
sed -i.$(date +%Y%m%d) 's/foo/bar/g' config.conf

La première commande crée un fichier .txt.backup, tandis que la seconde crée une sauvegarde datée, une astuce que j'utilise lors de la répétition des configurations, me permettant de garder une trace de la version et de la date.

5. Appliquer plusieurs modifications à la fois

Parfois, une seule modification ne suffit pas. Vous pouvez nettoyer un jeu de données, unifier des étiquettes ou modifier un fichier de configuration nécessitant plusieurs modifications. Exécuter la commande sed plusieurs fois est utile, mais inefficace. Vous pouvez plutôt regrouper les modifications afin que le fichier ne soit analysé qu'une seule fois.

Par exemple, pour effectuer deux substitutions en un seul passage, utilisez plusieurs balises e :

sed -i -e 's/pomme/orange/g' -e 's/poire/raisin/g' fichier.txt

Ici, la pomme devient une orange et la poire un raisin. Pour un style plus compact, vous pouvez regrouper les commandes dans une seule chaîne, séparées par un point-virgule :

sed's/rouge/bleu/g; s/pomme/orange/g; /draft/d'data.txt

Cette version remplace les couleurs, modifie les noms des fruits et supprime toutes les lignes contenant des brouillons. Son fonctionnement est identique, mais à mesure que les modifications s'accumulent, la lisibilité se dégrade. C'est là qu'intervient le déplacement des commandes vers un fichier texte personnalisé.

6. Automatiser les modifications à l'aide de scripts

Si vous effectuez des tâches de nettoyage récurrentes, par exemple un projet contenant des centaines de fichiers contenant des erreurs de formatage simples comme des caractères supplémentaires, une terminologie incohérente ou des commentaires aléatoires, l'automatisation est indispensable. Au lieu de coller des lignes dans votre terminal, enregistrez vos modifications dans un fichier texte et appliquez-les au texte souhaité.

Par exemple, créez un fichier edits.sed avec ces lignes :

s/pomme/orange/g
s/poire/raisin/g
/^#/d

Vous pouvez désormais tout exécuter en même temps avec :

sed -i -f edits.sed fichier.txt

À l'aide d'une seule commande, la commande sed applique simultanément toutes vos modifications au fichier sélectionné. Cependant, vous devrez consacrer du temps à la création de règles edits.sed pour les fichiers à modifier.

7. Édition de texte à l'aide d'expressions régulières (Regex)

Les expressions régulières décrivent des modèles plutôt que du texte littéral. Cela signifie que vous pouvez cibler des formes de données, comme un mot suivi d'un nombre ou n'importe quel texte en fin de ligne, plutôt que de simples mots. À première vue, les expressions régulières peuvent paraître intimidantes, mais une fois quelques notions de base maîtrisées, vous aurez l'impression de maîtriser un véritable couteau suisse pour manipuler du texte.

Les expressions régulières ne sont pas seulement des outils d'affinement de texte ; elles permettent également d'identifier des tendances et de façonner votre façon de travailler avec les données. Voici quelques symboles clés :

^ et $ correspondent au texte au début ou à la fin d'une ligne.

Lisez aussi:  Mon choix de Linux comme meilleur environnement pour le premier ordinateur de mes enfants

Les crochets comme [0-9] correspondent à n'importe quel nombre, et [aeiouAEIOU] vous aident à trouver ou à supprimer des voyelles.

Point. Indique n'importe quelle lettre unique.
* et + vous permettent de répéter les motifs autant de fois que vous le souhaitez.
Les expressions régulières peuvent être un peu complexes, mais même l'apprentissage de certaines bases ouvre de vastes possibilités avec des outils comme sed.

Prenez cette commande, qui inverse les noms et prénoms :

sed -E 's/^([A-Za-z]+)[[:space:]]+([A-Za-z]+)$/\2, \1/' noms.txt

Si votre fichier ressemble à ceci :

Jean Dupont
Jane Smith

Alors le résultat sera comme ceci :

Doe, John
Smith, Jane

Regex résout également les problèmes de cohérence, tels que le remplissage des nombres impairs avec des zéros ou la suppression des espaces de fin des enregistrements et des fichiers CSV :

sed -E 's/\b([0-9])\b/0\1/g' numbers.txt #ajouter un zéro non significatif
sed -E 's/[[:space:]]+$//' file.txt #suppression des espaces de fin

8. Nettoyage et formatage des fichiers texte

Des fichiers indésirables apparaissent souvent, notamment lorsqu'ils proviennent de Windows, d'Excel ou d'exportations générées automatiquement. Sed nettoie rapidement ces données, facilitant ainsi leur lecture, leur partage ou leur insertion dans des scripts.

Un exemple courant est celui des fins de ligne Windows. Si vous ouvrez un fichier Windows sous Linux et que vous voyez des caractères ^M étranges, il s'agit d'un retour chariot (\r). Vous pouvez supprimer le retour chariot supplémentaire à la fin de chaque ligne comme suit :

sed -i 's/\r$//' fichier.txt

Les tabulations sont un autre problème courant. Pour regrouper toutes les informations dans des espaces, vous pouvez utiliser les méthodes suivantes :

sed -E 's/\t/ /g' fichier.txt

De plus, les espaces blancs s'infiltrent partout : lignes vides, retours arrière ou espacement des mots incohérent. sed gère cela facilement avec ces commandes :

sed -E '/^[[:space:]]*$/d' fichier.txt
sed -E 's/[[:space:]]+$//' fichier.txt
sed -E 's/[[:space:]]+/ /g' fichier.txt

Ici, la première commande nettoie les lignes vides, la seconde supprime les espaces vides sur les bords et la dernière compresse plusieurs espaces en espaces uniques pour un texte net et uniforme.

9. Combinaison avec d'autres commandes

L'un des aspects que j'apprécie chez sed est sa capacité à fonctionner en parfaite harmonie avec les autres commandes Bash. Il permet de réduire la sortie, d'extraire des informations, de comparer les fichiers traités et d'étendre l'édition à plusieurs fichiers, le tout à partir d'une seule ligne rapide ou au sein de scripts plus volumineux.

Par exemple, ps aux affiche généralement plus de lignes que nécessaire. Mais le lier à sed ne conserve que les cinq premières lignes :

ps aux | sed -n '1,5p'
Utilisation de sed avec la commande ps aux pour obtenir une sortie limitée Les meilleures façons d'utiliser la commande sed pour éditer du texte sous Linux
Vous pouvez également combiner grep et sed pour extraire des informations spécifiques. Par exemple, si vous disposez d'un journal contenant des messages d'erreur avec des horodatages entre crochets, utilisez ceci pour extraire uniquement les horodatages :
fichier journal grep 'ERREUR' | sed -E 's/.*\[([0-9-: ]+)\].*/\1/p'

Ce ne sont là que quelques exemples. Vous pouvez combiner sed avec diff, find, xargs et bien d'autres. Cela permet de remodeler des chaînes complexes, améliorant ainsi les performances de la commande suivante.

Des simples opérations de recherche et remplacement aux conversions complexes basées sur des expressions régulières, sed offre des solutions qui vous font gagner d'innombrables heures de travail manuel. Cependant, comme pour toute commande Linux, la clé de la maîtrise réside dans la pratique quotidienne. Utilisez-le souvent et cela deviendra vite facile.

Sous Linux, la commande sed vous offre une puissance considérable pour manipuler du texte et des fichiers plus rapidement et plus efficacement. Au lieu de recourir à des outils d'édition manuelle ou graphiques, vous pouvez effectuer des modifications complexes avec une seule ligne de commande. En approfondissant les exemples de sed, vous découvrirez sa flexibilité et sa capacité à économiser du temps et des efforts, ce qui en fait un outil indispensable pour tout utilisateur ou développeur Linux.

Aller au bouton supérieur