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!