informatique télécharger logiciel gratuit jeu pc gratuit jeu flash gratuit

Forum - chat - échantillons gratuits - cadeau gratuit - réduction et bon d'achat - voyage pas cher séjour

Rubriques Documentation Linux

grattage gratuit
loterie gratuite
casino gratuit
quizz gratuit
pari gratuit
jeu de pronostic
tirage au sort
jeux de hasard
tombola gratuite
jeux en flash
jeu en réseau
jeu de stratégie
jeux TV
multi jeux
concours gratuit

sed [OPTION]... {script si aucun autre n'est spécifié} [entrée]...
Rechercher une chaîne de caractères dans un fichier et la remplacer.

-n, --quiet, --silent supprimer l'écriture automatique de l'espace des motifs
-e script, --expression=script ajouter le script aux commandes qui seront executées
-f fichier de script, --file=fichier de script ajouter le contenu du fichier aux commandes qui seront executées
-i[suffixe], --in-place[=suffix] éditer les fichiers à leur place (fait une sauvegarde si l'extension est fournie)
-l N, --line-length=N spécifier la longueur de coupure de ligne désirée pour
la commande `l'
-r, --regexp-extended utiliser des expressions régulières étendues dans le script.
-s, --separate considérer que les fichiers sont séparés et non un simple long flux continu.
-u, --unbuffered charger les quantités minimales de données des fichiers d'entrée et vider les tampons de sortie plus souvent
--help afficher cette aide et sortir
-V, --version afficher les informations de version du logiciel et sortir
Si aucune des options -e, --expression, -f ou --file n'est donnée, le premier
argument n'étant pas une option est interprété comme un script sed.
Les arguments restants sont les noms des fichiers d'entrée.
Si aucun fichier d'entrée n'est spécifié l'entrée standard est lue.
Rapporter toutes anomalies à: bonzini@gnu.org.
N'oubliez pas d'inclure le mot ``sed'' quelque-part dans la zone ``Subject:''

Exemples :

[cr@localhost Documents]$ cat fichier3.txt
a.b[1]= vrai
b.a[1]= faux
c.b[0]= vrai
a.b[2]= faux
a.b[0]= vrai
a.b.c.d
a=b=c=d
a-b-c-d
a*b*c*d

La commande suivante lit fichier3.txt et affiche ses lignes sur la sortie standard en remplaçant la chaîne a par la chaîne A.La chaîne s/ indique le caractère de sépération ici le caratère / et le s pour string ( caractère).
[cr@localhost Documents]$ sed s/a/A/ fichier3.txt
A.b[1]= vrai a.b[1]= vrai
b.A[1]= faux b.a[1]= faux
c.b[0]= vrAi c.b[0]= vrai
A.b[2]= faux a.b[2]= faux
A.b[0]= vrai a.b[0]= vrai
A.b.c.d a.b.c.d a.b.c.d
A=b=c=d a=b=c=d a=b=c=d
A-b-c-d a-b-c-d a-b-c-d
A*b*c*d a*b*c*d a*b*c*d
Le fichier3.txt n'est pas modifier !!!

On peut changer le caractère de séparation pour l'analyse
on utilise ici # à la place de /.La chaîne s# indique le caractère de sépération ici le caratère # et le s pour string ( caractère).
[cr@localhost Documents]$ sed s#a#A# fichier3.txt
A.b[1]= vrai a.b[1]= vrai
b.A[1]= faux b.a[1]= faux
c.b[0]= vrAi c.b[0]= vrai
A.b[2]= faux a.b[2]= faux
A.b[0]= vrai a.b[0]= vrai
A.b.c.d a.b.c.d a.b.c.d
A=b=c=d a=b=c=d a=b=c=d"
A-b-c-d a-b-c-d a-b-c-d"
A*b*c*d a*b*c*d a*b*c*d"

La chaîne s! indique le caractère de sépération ici le caratère ! et le s pour string ( caractère).Mais cela ne fonctionne pas.
[cr@localhost Documents]$ sed s!a!A! fichier3.txt
bash: !a!A!: event not found

On peut utiliser le caractère , à la place de # ou de /
La chaîne s, indique le caractère de sépération ici le caratère , et le s pour string ( caractère).
[cr@localhost Documents]$ sed s,a,A, fichier3.txt
A.b[1]= vrai a.b[1]= vrai
b.A[1]= faux b.a[1]= faux
c.b[0]= vrAi c.b[0]= vrai
A.b[2]= faux a.b[2]= faux
A.b[0]= vrai a.b[0]= vrai
A.b.c.d a.b.c.d a.b.c.d
A=b=c=d a=b=c=d a=b=c=d"
A-b-c-d a-b-c-d a-b-c-d"
A*b*c*d a*b*c*d a*b*c*d"
[cr@localhost Documents]$

Pour remplacer plus d'une occurrence par ligne , il faut l'option g à la fin de la commande.
[cr@localhost Documents]$ sed 's/a/A/g' fichier3.txt
A.b[1]= vrAi A.b[1]= vrAi
b.A[1]= fAux b.A[1]= fAux
c.b[0]= vrAi c.b[0]= vrAi
A.b[2]= fAux A.b[2]= fAux
A.b[0]= vrAi A.b[0]= vrAi
A.b.c.d A.b.c.d A.b.c.d
A=b=c=d A=b=c=d A=b=c=d
A-b-c-d A-b-c-d A-b-c-d
A*b*c*d A*b*c*d A*b*c*d
[cr@localhost Documents]$

Le résultat de sed est envoyé sur la sortie standard (pas modifier), on peut la rediriger dans un fichier. Pour conserver les modifications dans un fichier :
sed s/a/A/ fichier3.txt>fichier3bis.txt

[cr@localhost Documents]$ sed s/a/A/ fichier3.txt>fichier3sed.txt
[cr@localhost Documents]$ cat fichier3sed.txt
A.b[1]= vrai a.b[1]= vrai
b.A[1]= faux b.a[1]= faux
c.b[0]= vrAi c.b[0]= vrai
A.b[2]= faux a.b[2]= faux
A.b[0]= vrai a.b[0]= vrai
A.b.c.d a.b.c.d a.b.c.d
A=b=c=d a=b=c=d a=b=c=d
A-b-c-d a-b-c-d a-b-c-d
A*b*c*d a*b*c*d a*b*c*d
[cr@localhost Documents]$

Afficher les lignes 1 et 2 du fichier
[cr@localhost Documents]$ sed -n 1,2p fichier3sed.txt
A.b[1]= vrai a.b[1]= vrai
b.A[1]= faux b.a[1]= faux
[cr@localhost Documents]$

Afficher les lignes 3,4,5 et6 du fichier
[cr@localhost Documents]$ sed -n 3,6p fichier3sed.txt
c.b[0]= vrAi c.b[0]= vrai
A.b[2]= faux a.b[2]= faux
A.b[0]= vrai a.b[0]= vrai
A.b.c.d a.b.c.d a.b.c.d
[cr@localhost Documents]$

Les expressions régulières
^ début de ligne
$ fin de ligne
[] classe de caractères (exemples : [A-Z] correspond à toutes les lettres majuscules)
[^...] classe de caractères correspondant à n'importe quels caractères sauf ceux qui suivent le caractère ^
[^:] correspond à tous les caractères sauf le :.
* le caractère précédant * répété de 0 à n fois

Attention il ne faut pas oublier l'antislash
- sans antislash
[cr@localhost Documents]$ sed -n '/^a.b/p' fichier3.txt
a.b[1]= vrai a.b[1]= vrai
a.b[2]= faux a.b[2]= faux
a.b[0]= vrai a.b[0]= vrai
a.b.c.d a.b.c.d a.b.c.d
a=b=c=d a=b=c=d a=b=c=d
a-b-c-d a-b-c-d a-b-c-d
a*b*c*d a*b*c*d a*b*c*d
[cr@localhost Documents]$

- avec antislash après ^a
Avec l'antislash après ^a\, le point se subit pas d'interprétation, il est pris comme un caractère.
[cr@localhost Documents]$ sed -n '/^a\.b/p' fichier3.txt
a.b[1]= vrai a.b[1]= vrai
a.b[2]= faux a.b[2]= faux
a.b[0]= vrai a.b[0]= vrai
a.b.c.d a.b.c.d a.b.c.d
[cr@localhost Documents]$

Exemple d'application
Dans les pages html,il y parfois des caractères particuliers
" "
¤ €
ô ô
à á
Avec un script sed on peut remplacer ces caractères par leur équivalent en code html, mais attention, IL NE FAUT PAS OUBLIER L'ANTISLASH !
[cr@localhost Documents]$ sed "s/\"/\"/" fichier3.txt
a.b[1]= vrai a.b[1]= vrai
b.a[1]= faux b.a[1]= faux
c.b[0]= vrai c.b[0]= vrai
a.b[2]= faux a.b[2]= faux
a.b[0]= vrai a.b[0]= vrai
a.b.c.d a.b.c.d a.b.c.d
a=b=c=d a=b=c=d a=b=c=d "
a-b-c-d a-b-c-d a-b-c-d "
a*b*c*d a*b*c*d a*b*c*d "
[cr@localhost Documents]$

ON PEUT FAIRE UN SCRIPT :
#!/bin/sed -f
#fichier html.sed
s/\"/\"/g
s/\à/\á/g
chmod u+x html.sed pour le rendre executable !
[cr@localhost Documents]$ cat fichier3.txt
a.b[1]= vrai a.b[1]= vrai à
b.a[1]= faux b.a[1]= faux à
c.b[0]= vrai c.b[0]= vrai à
a.b[2]= faux a.b[2]= faux à
a.b[0]= vrai a.b[0]= vrai
a.b.c.d a.b.c.d a.b.c.d
a=b=c=d a=b=c=d a=b=c=d "
a-b-c-d a-b-c-d a-b-c-d "
a*b*c*d a*b*c*d a*b*c*d "

[cr@localhost Documents]$ html.sed fichier3.txt
a.b[1]= vrai a.b[1]= vrai á
b.a[1]= faux b.a[1]= faux á
c.b[0]= vrai c.b[0]= vrai á
a.b[2]= faux a.b[2]= faux á
a.b[0]= vrai a.b[0]= vrai
a.b.c.d a.b.c.d a.b.c.d
a=b=c=d a=b=c=d a=b=c=d "
a-b-c-d a-b-c-d a-b-c-d "
a*b*c*d a*b*c*d a*b*c*d "
[cr@localhost Documents]$

Ou alors faire un fichier :( ici , il n'y pas la première ligne #!/bin/sed -f
[cr@localhost Documents]$ cat html.sed
#fichier html.sed
s/\"/\"/g
s/\à/\á/g
Ensuite faire sed -f html.sed fichier3.txt

[cr@localhost Documents]$ cat html.sed
#fichier html.sed
s/\"/\"/g
s/\à/\á/g

L'option -f : ajouter le contenu du fichier aux commandes qui seront executées [cr@localhost Documents]$ sed -f html.sed fichier3.txt
a.b[1]= vrai a.b[1]= vrai á
b.a[1]= faux b.a[1]= faux á
c.b[0]= vrai c.b[0]= vrai á
a.b[2]= faux a.b[2]= faux á
a.b[0]= vrai a.b[0]= vrai
a.b.c.d a.b.c.d a.b.c.d
a=b=c=d a=b=c=d a=b=c=d "
a-b-c-d a-b-c-d a-b-c-d "
a*b*c*d a*b*c*d a*b*c*d "
[cr@localhost Documents]$

Copyright © 2004 par Rachid CHOUCHI pour fichepratique.com