home

commandes Unix

sh

csh

ksh

expressions régulières

sed

awk

La commande sed


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
sed est un éditeur non interactif.
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]
-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.
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.

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 à ad2
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 fichierecrit la ligne dans le fichier specifié en plus de la sortie standard.
exemple :
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 pas

Les commande d'insertions a,i

a\
texte
: écrit le texte après la ligne

i\
texte
: écrit le texte avant la ligne

exemple :
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 Martin 

Les autres commandes: q,= et w

q quitte
= écrit les numéro de ligne
w fichier écrit dans un fichier
exemple :
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,



©
Isabelle Vollant ( http://www.multimania.com/vollant )

home

commandes Unix

sh

csh

ksh

expressions régulières

sed

awk

mise à jour le 10/04/97
Francité Click Here!