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 [22/08/2012 10:44] smolski |
doc:systeme:sed [26/09/2013 10:02] smolski [sed] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== SED ====== | + | ====== sed ====== |
* Objet : ''sed'' signifie //Stream EDitor//, autrement dit //éditeur de flux// et plus précisément //éditeur de flux orienté ligne//. | * Objet : ''sed'' signifie //Stream EDitor//, autrement dit //éditeur de flux// et plus précisément //éditeur de flux orienté ligne//. | ||
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 [[commande:editeur:vim]] ou [[commande:editeur: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 69: | Ligne 71: | ||
==== Option -i ==== | ==== Option -i ==== | ||
- | <note important>ATTENTION ! L'option -i __modifiera réellement__ les fichiers traités.</note> | + | **ATTENTION !** L'option -i __modifiera réellement__ les fichiers traités. |
L'option ''-i'' est la fonction d'écriture de SED. Si elle n'est pas spécifiée, le fichier traité ne sera pas modifié. | L'option ''-i'' est la fonction d'écriture de SED. Si elle n'est pas spécifiée, le fichier traité ne sera pas modifié. | ||
Ligne 108: | 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 229: | 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 237: | Ligne 249: | ||
substitue toutes les chaînes //Fraises// ou //fraises// par ''FRAISES'' | substitue toutes les chaînes //Fraises// ou //fraises// par ''FRAISES'' | ||
+ | |||
---- | ---- | ||
\\ | \\ | ||
Ligne 246: | 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 256: | 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 450: | 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 ==== | ||
Ligne 463: | Ligne 482: | ||
toaa2aato. | toaa2aato. | ||
+ | ==== sed et le point ==== | ||
+ | |||
+ | La commande: | ||
+ | |||
+ | sed -e 's/motif: .*/motif: nouveau/' <fichier> | ||
+ | |||
+ | Remplacera **motif:** par **motif: nouveau** dans le <fichier> | ||
+ | |||
+ | //Merci à //**cthulu**// Hop !// LOL | ||
===== Lien : ===== | ===== Lien : ===== | ||