Comment utiliser Sed sous Linux

sed signifie éditeur de flux. C'est un éditeur basé sur la ligne de commande pour Linux. L'utilisation courante de sed est pour l'édition de fichiers dans le cadre d'un script d'automatisation sous Linux, car les éditeurs habituels nécessitent une entrée active de l'utilisateur et ne peuvent pas éditer de fichiers en dehors des écrans de l'éditeur. Sed est le plus souvent utilisé pour effectuer une recherche et un remplacement à partir de la ligne de commande.

Ce type d'éditeur de texte peut également être classé comme un éditeur de texte non interactif.

Voyons quelques options courantes pour éditer des fichiers à l'aide de Sed. Nous prendrons comme exemple le fichier suivant :

$: cat test.txt Un chien brun rapide a sauté par-dessus le chat paresseux. Système d'exploitation Linux. La forêt près de chez moi a un chat ainsi que des loups. 

Rechercher et remplacer

Pour rechercher une chaîne dans un fichier et la remplacer par une autre chaîne, exécutez :

sed -i "s/cat/fox/g" test.txt

Ici le -je flag demande à sed d'écrire les modifications dans le fichier. Sans ce drapeau, sed affichera simplement le fichier avec la chaîne modifiée.

Dans les guillemets, nous avons m/chat/renard/g. le s est pour la recherche et le remplacement de la commande de sed. Ensuite, nous avons la chaîne à rechercher, qui est chat. Ensuite, la chaîne par laquelle la remplacer, c'est-à-dire, Renard. Enfin, nous avons l'option g, qui instruit sed pour remplacer toutes les occurrences sur toutes les lignes du fichier. Sans le g, sed remplacera uniquement la première occurrence de chat sur chaque ligne.

Regex peut également être utilisé ici.

sed -i "s/f[a-z]*\./cat\./g"

Insérer

Pour insérer du texte avant une ligne avec une chaîne correspondante, utilisez :

sed -i "/cat/i Démarrer :" test.txt

Ici, chat est la chaîne recherchée et Démarrer: est la chaîne à saisir avant la ligne où se trouve la chaîne recherchée.

De même, pour insérer du texte après une ligne, utilisez :

sed -i "/fox/a Fin." test.txt

Supprimer

Pour supprimer une ligne contenant une sous-chaîne, utilisez :

sed -i "/Linux/d" test.txt

Pour supprimer une ligne avec un numéro de ligne, par ex. la première ligne, utilisez :

sed -i '1d' test.txt

Combiner plusieurs fonctions

Pour combiner plusieurs fonctions, par ex. rechercher et remplacer, supprimer, en une seule commande, -e le drapeau peut être utilisé.

sed -i -e "s/fox/cat/g" -e '2d' test.txt

? Acclamations!