home www.shellunix.com commandes Unix Shell unix: sh Shell unix: csh Shell unix: ksh expressions régulières sed awk perl

Obtenir l'aide mémoire Unix au format pdf


La commande sed

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

Les commandes sed

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 fichier
ecrit 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 <:p>

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/:.*//
  
commande:
 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. 
commande :
 sed -e "q" fichier 
resultat :
Un,
commande :
 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,


Obtenir l'aide mémoire Unix au format pdf

home www.shellunix.com commandes Unix Shell unix: sh Shell unix: csh Shell unix: ksh expressions régulières sed awk perl

© Isabelle Vollant (http://www.shellunix.com)
mise à jour le 27/08/10