Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste [28/07/2014 11:37] Hypathie [La commande s] |
utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste [28/07/2014 12:47] Hypathie [Commandes indiquant en elle-même un adressage sed] |
||
---|---|---|---|
Ligne 45: | Ligne 45: | ||
<code> | <code> | ||
- | [options] /adressage/cmd_de_sed [options_cmd_de_sed] | + | sed [-n [-e commande] [-f script] [-i[.extension]]\ |
+ | [l [cesure]] rsu] [<commande>] [<fichier(s)>] | ||
</code> | </code> | ||
- | |||
- | //Ce que j'appelle là "options_cmd_de_sed" est appelé selon la documentation "drapeaux", ou "options", ou encore "indicateur". Elle dépend de la connaissance des commandes de sed.// | ||
-> La compréhension de la documentation et le fonctionnement global de sed sont facilités lorsque l'on maîtrise un double rapport d'implications :\\ | -> La compréhension de la documentation et le fonctionnement global de sed sont facilités lorsque l'on maîtrise un double rapport d'implications :\\ | ||
Ligne 547: | Ligne 546: | ||
^ ^ ^ | ^ ^ ^ | ||
|g | global : toutes les occurrences | | |g | global : toutes les occurrences | | ||
- | |w | écrire les substitutions effectuées dans un fichier | | + | |n | la nième occurrence d'une ligne | |
|p | afficher la ligne modifiée | | |p | afficher la ligne modifiée | | ||
+ | |w | écrire les substitutions effectuées dans un fichier | | ||
|e | exécution d'une commande | | |e | exécution d'une commande | | ||
|I | ignorer la casse | | |I | ignorer la casse | | ||
|M | correspondance de E.R.\\ (implémentation GNU, non portable) | | |M | correspondance de E.R.\\ (implémentation GNU, non portable) | | ||
+ | |||
+ | ===g ; n et p === | ||
+ | * substituer toutes les occurrences de motif | ||
+ | <code text sed-coincoin.txt> | ||
+ | coin | ||
+ | coin | ||
+ | foobar | ||
+ | barbar | ||
+ | coincoin babar coincoin | ||
+ | </code> | ||
+ | |||
+ | <code user> | ||
+ | sed 's/coincoin//g' sed-coincoin.txt | ||
+ | </code> | ||
+ | <code> | ||
+ | coin | ||
+ | coin | ||
+ | foobar | ||
+ | barbar | ||
+ | babar | ||
+ | </code> | ||
+ | > Sans ''g'', seul le "coincoin" à gauche de "babar" aurait été substitué par un espace. | ||
+ | |||
+ | * Substituer l'occurrence d'une ligne | ||
+ | |||
+ | <code user> | ||
+ | sed '/babar/s/coin//3' sed-coincoin.txt | ||
+ | </code> | ||
+ | <code> | ||
+ | coin | ||
+ | coin | ||
+ | foobar | ||
+ | barbar | ||
+ | coincoin babar coin | ||
+ | </code> | ||
+ | |||
+ | * Afficher sur la sortie standard la substitution : | ||
+ | <code user> | ||
+ | var="ligne1\nligne2\nligne3\nligne\nligne5" | ||
+ | </code> | ||
+ | <code user> | ||
+ | echo -e "$var" | sed '4 s/e/e4/p' | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | ligne1 | ||
+ | ligne2 | ||
+ | ligne3 | ||
+ | ligne4 | ||
+ | ligne4 | ||
+ | ligne5 | ||
+ | </code> | ||
+ | |||
+ | > Le doublon est dû à l'affichage du cache, auquel s'ajoute l'affichage de la substitution. | ||
+ | > Il faut utiliser l'option sed -n : | ||
+ | |||
+ | <code user>echo -e "$var" | sed -n '4 s/e/e4/p'</code> | ||
+ | |||
+ | ligne4 | ||
+ | |||
+ | === w écrire=== | ||
+ | <code user> | ||
+ | sed -n 's/barbar/babar/pw fichier-barbar' sed-coincoin.txt | ||
+ | </code> | ||
+ | <code> | ||
+ | babar | ||
+ | </code> | ||
+ | <code user> | ||
+ | cat fichier-barbar | ||
+ | </code> | ||
+ | <code> | ||
+ | babar | ||
+ | </code> | ||
+ | |||
+ | === e : exécution d'une commande=== | ||
+ | <code user> | ||
+ | sed 's/barbar/date/e' sed-coincoin.txt | ||
+ | </code> | ||
+ | <code> | ||
+ | coin | ||
+ | coin | ||
+ | foobar | ||
+ | lundi 28 juillet 2014, 12:32:20 (UTC+0200) | ||
+ | coincoin babar coincoin | ||
+ | </code> | ||
+ | |||
+ | ===I : ignorer la casse === | ||
+ | <code user> | ||
+ | var="COINcoin\nbabar\ncoinCOIN\nbabar\ncoincoin" | ||
+ | </code> | ||
+ | <code user> | ||
+ | echo -e "$var" | sed 's/coincoin/tointoin/Ig' | ||
+ | </code> | ||
+ | <code> | ||
+ | tointoin | ||
+ | babar | ||
+ | tointoin | ||
+ | babar | ||
+ | tointoin | ||
+ | </code> | ||
+ | |||
====Les indicateurs spéciaux==== | ====Les indicateurs spéciaux==== | ||
Ligne 973: | Ligne 1074: | ||
Si un fichier du même nom existe déjà, il sera écrasé sans avertissement ni confirmation et ce à chaque invocation du script.\\ | Si un fichier du même nom existe déjà, il sera écrasé sans avertissement ni confirmation et ce à chaque invocation du script.\\ | ||
Si plusieurs instructions de la commande "w" sont appelées à écrire dans un même fichier depuis un script, chaque écriture est ajoutée à la fin du fichier. | Si plusieurs instructions de la commande "w" sont appelées à écrire dans un même fichier depuis un script, chaque écriture est ajoutée à la fin du fichier. | ||
- | |||
- | ====Exemples==== | ||
===créer un fichier avec sed et echo :=== | ===créer un fichier avec sed et echo :=== | ||
<code user> | <code user> | ||
echo "contenu d'un fichier créé" | sed 'w fichier-sed-cree' | echo "contenu d'un fichier créé" | sed 'w fichier-sed-cree' | ||
+ | </code> | ||
+ | <code> | ||
+ | contenu d'un fichier créé | ||
+ | </code> | ||
+ | <code user> | ||
+ | cat fichier-sed-cree | ||
</code> | </code> | ||
<code> | <code> |