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 | ||
doc:systeme:sed [23/05/2013 18:51] smolski [Préparation aux exemples d'illustration de ce tuto :] |
doc:systeme:sed [26/09/2013 10:02] smolski [sed] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
* Commentaires : // sed est un outil éditeur en ligne. // | * Commentaires : // sed est un outil éditeur en ligne. // | ||
* Débutant, à savoir : | * Débutant, à savoir : | ||
- | * [[manuel:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | * [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) |
- | * [[manuel:bash]] En complément. | + | * [[:doc:programmation:shell:repertoires | Shell - Les répertoires et chemins]] **INDISPENSABLE** |
+ | * [[:doc:programmation:shell:regexp | REGEXP - Les expressions régulières dans un shell.]] | ||
+ | * [[:doc:programmation:bash | Le shell BASH]] En complément. | ||
===== Présentation ===== | ===== Présentation ===== | ||
''sed'' est souvent défini comme un éditeur de texte en ligne non-interactif. | ''sed'' est souvent défini comme un éditeur de texte en ligne non-interactif. | ||
- | - Il lit les lignes d'un fichier une à une (ou provenant de l'entrée standard), sans traiter nécessairement tout le texte du fichier en cours (comme le font [[manuel:vim]] ou [[manuel:nano]] par exemple) ; | + | - Il lit les lignes d'un fichier une à une (ou provenant de l'entrée standard), sans traiter nécessairement tout le texte du fichier en cours (comme le font [[:doc:editeurs:vim:vim]] ou [[:doc:editeurs:nano]] par exemple) ; |
- leur applique un certain nombre de commandes d'édition ; | - leur applique un certain nombre de commandes d'édition ; | ||
- et renvoie les lignes résultantes sur la sortie standard, __sans modification__ du fichier traité. | - et renvoie les lignes résultantes sur la sortie standard, __sans modification__ du fichier traité. | ||
Ligne 109: | Ligne 111: | ||
<note>L'option ''-e'' n'est pas nécessaire quand vous n'avez qu'une seule fonction d'édition.</note> | <note>L'option ''-e'' n'est pas nécessaire quand vous n'avez qu'une seule fonction d'édition.</note> | ||
+ | |||
+ | === Astuce === | ||
+ | |||
+ | En cas de confusion avec un chemin, genre ''/machin/truc/chouette '' __après l'option __ les séparateurs ''/ '' peuvent être remplacés par des caractères neutres, comme la virgule ou le dièse. Par exemple avec le chemin précédent : | ||
+ | sed -e 's#/machin/truc/chouette#/machin/truc/wouap#' | ||
+ | |||
+ | Evitant ainsi des confusions dans l'interprétation de la commande. | ||
+ | |||
+ | //Merci à //**enicar**// sur le chan df !// | ||
==== Option -f ==== | ==== Option -f ==== | ||
Ligne 230: | Ligne 241: | ||
La fonction de substitution peut aussi être utilisée avec une **expression régulière**. \\ | La fonction de substitution peut aussi être utilisée avec une **expression régulière**. \\ | ||
- | Voir : [[regexp]] | + | Voir : [[:doc:programmation:shell:regexp]] |
=== Exemples : === | === Exemples : === | ||
Ligne 238: | Ligne 249: | ||
substitue toutes les chaînes //Fraises// ou //fraises// par ''FRAISES'' | substitue toutes les chaînes //Fraises// ou //fraises// par ''FRAISES'' | ||
+ | |||
---- | ---- | ||
\\ | \\ | ||
Ligne 247: | Ligne 259: | ||
#TOTo et TITI sont des chipoteurs du jardin.</code> | #TOTo et TITI sont des chipoteurs du jardin.</code> | ||
Ainsi, nous avons commenté l'ensemble des lignes du fichier test1.txt. | Ainsi, nous avons commenté l'ensemble des lignes du fichier test1.txt. | ||
+ | |||
---- | ---- | ||
\\ | \\ | ||
Ligne 257: | Ligne 270: | ||
</code> | </code> | ||
Ainsi, nous avons commenté uniquement la 3ème ligne du fichier //test1.txt//. | Ainsi, nous avons commenté uniquement la 3ème ligne du fichier //test1.txt//. | ||
+ | |||
---- | ---- | ||
\\ | \\ | ||
Ligne 451: | Ligne 465: | ||
de notre fichier. test1.txt | de notre fichier. test1.txt | ||
+ | |||
+ | <note>Pour rendre effective cette commande programmée, écrivez : '' -i '' ainsi : | ||
+ | <code bash> | ||
+ | $ sed -i -f test3.txt test1.txt</code></note> | ||
==== sed et les sous-chaînes ==== | ==== sed et les sous-chaînes ==== |