La commande sed | |||||||||||||
sed est un éditeur non interactif.
- La commande de substitution s
- La négation !
- La commande de supression d
- Les commande d'insertions a,i
- Les autres commandes: q,= et w
Cette commande permet d'appliquer un certain nombre de commandes sur un fichier puis d'en afficher le resultat (sans modification du fichier de départ) sur la sortie standard.syntaxe : sed [-n] [-e commande] [-f fichier de commandes] [fichier]
principe de fonctionnement : Pour chaque ligne , on applique la commande (si cela est possible) puis on affiche sur la sortie standard la ligne modifiée ou non.
-n écrit seulement les lignes spécifiées (par l'option /p) sur la sortie standard -e permet de specifier les commandes à appliquer sur le fichier. Cette option est utile lorque vous appliquez plusieurs commandes. Afin d'eviter que le shell interprette certains caracteres, il faut mieux encadrer la commande avec des ' ou des " . -f les commandes sont lu à partir d'un fichier. la syntaxe générale des commandes est de la forme caracterisation_des_adresses commandes avec caractérisation_des_adresses de la forme :
toutes les lignes num la ligne num (la dernière ligne est référencée par $ num1,num2 les lignes entre les lignes num1 et num2 RE les lignes correspondant à l'expression régulière RE RE1,RE2 les lignes entre la première ligne correspondant à l'expression régulièreRE1 et la première ligne correspondant à l'expression régulière RE2 La commande de substitution s
syntaxe : ad1,ad2s/RE/remplacement/flags
Remplace les expressions regulières RE par la chaine de remplacement entre les lignes ad1 à ad2exemple :
flags g global, c'est à dire toutes les occurences de la chaine RE (par defaut seule la première occurence est remplacée) p imprime la ligne (utile avec l'option -n) w fichier ecrit la ligne dans le fichier specifié en plus de la sortie standard.
sed "s/[Cc]omputer/COMPUTER/g" fichier
sed -e "s/\([0-9][0-9]*\)/**\1**/" fichier : encadre le premier nombre de la ligne avec des **La négation !
syntaxe : ad1,ad2 !fonction argument
La fonction est appliquée à toutes les lignes qui ne correspondent pas à la caractérisation .La commande de supression d
efface les lignes (au niveau de la sortie, le fichier d'origine n'est pas modifié)
example:
sed "1,10d" fichier : sortie du fichier à partir de la onzième ligne
sed "/^From/!d" fichier : On n'efface tout sauf les lignes commençant par From , donc on imprime les lignes commençant par From.
Remarque : Il est parfois plus facile de caractériser la négation de ce que l'on veut (voir example précédent) . Par exemple plutot de récuperer ce que je veux, j'efface ce qui ne m'interresse pasLes commande d'insertions a,i
a\
texte : écrit le texte après la lignei\
texte : écrit le texte avant la ligneexemple :
fichier de commandes :
1i\
\
------------------------------------------------------------------------------------\
LOGIN USER\
------------------------------------------------------------------------------------
s/:/!/
s/:/-/
s/:/-/
s/:/!/
s/!.*!/ /
s/:.*//sed -f fich_commandes /etc/passwd
resultat :------------------------------------------------------------------------------------ LOGIN USER ------------------------------------------------------------------------------------ root Operator jd Jean Dupond vm Vincent MartinLes autres commandes: q,= et w
exemple :
q quitte = écrit les numéro de ligne w fichier écrit dans un fichier
fichier d'entrée :
Un,
deux.
Trois,
quatre.sed -e "q" fichier
resultat : Un,sed -e "/\./=/" -e "/[A-Z]/w capitale" fichier
résultat à l'écran :
Un,
2
deux.
Trois,
4
quatre.
résultat dans le fichier capitale :
Un,
Trois,