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 16:50] Hypathie [Commandes indiquant en elle-même un adressage sed] |
utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste [28/07/2014 18:09] Hypathie [Introduction] |
||
---|---|---|---|
Ligne 22: | Ligne 22: | ||
Par défaut (sans option) sed traite le flux d'entrée et affiche sur la sortie, non seulement le flux d'entrée qu'elle a lu ligne par ligne, mais aussi ce qu'elle a fait sur certaine ligne.\\ | Par défaut (sans option) sed traite le flux d'entrée et affiche sur la sortie, non seulement le flux d'entrée qu'elle a lu ligne par ligne, mais aussi ce qu'elle a fait sur certaine ligne.\\ | ||
Le flux d'entrée peut être ce qui lui est transmis par un pipe en ligne de commandes ou un fichier.\\ | Le flux d'entrée peut être ce qui lui est transmis par un pipe en ligne de commandes ou un fichier.\\ | ||
+ | |||
+ | * Méthodes d'appel : | ||
<code> | <code> | ||
Ligne 310: | Ligne 312: | ||
- | ===Adressage double === | + | =====Commandes de sed supportant les adressages universaux===== |
+ | ^ ^ ^ | ||
+ | |i\texte |insérer du texte | | ||
+ | |a\texte |ajouter du texte | | ||
+ | |||
+ | |||
+ | ==="i" : insertion avant la ligne d'adressage=== | ||
+ | <code user> | ||
+ | sed -i '1i\Ton sentiment comme atmosphère' sed-cmd | ||
+ | </code> | ||
+ | <code user> | ||
+ | cat sed-cmd | ||
+ | </code> | ||
+ | Ton sentiment comme atmosphère | ||
+ | automne | ||
+ | mon bel automne | ||
+ | dans les vergers | ||
+ | du fond du ciel | ||
+ | les éperviers | ||
+ | de tes yeux planent | ||
+ | tes feuilles | ||
+ | tes fruits, ta pomme | ||
+ | et le cerf, et son brame | ||
+ | à jamais aimés | ||
+ | de l'homme | ||
+ | en ton cheveu | ||
+ | me donnent | ||
+ | et des langueurs | ||
+ | et son adieu | ||
+ | </code> | ||
+ | |||
+ | === "a" : ajout après l'adressage=== | ||
+ | <code user> | ||
+ | sed -e '1a\ ' -e '2,$s/^/ /' -i sed-cmd | ||
+ | </code> | ||
+ | <code user> | ||
+ | cat sed-cmd | ||
+ | </code> | ||
+ | <code> | ||
+ | Ton sentiment comme atmosphère | ||
+ | |||
+ | automne | ||
+ | mon bel automne | ||
+ | dans les vergers | ||
+ | du fond du ciel | ||
+ | les éperviers | ||
+ | de tes yeux planent | ||
+ | tes feuilles | ||
+ | tes fruits, ta pomme | ||
+ | et le cerf, et son brame | ||
+ | à jamais aimés | ||
+ | de l'homme | ||
+ | en ton cheveu | ||
+ | me donnent | ||
+ | et des langueurs | ||
+ | et son adieu | ||
+ | </code> | ||
+ | |||
+ | ====Adressage double ==== | ||
C'est une paire d'adresses simples séparées par une virgule. Toutes les combinaisons sont possibles. | C'est une paire d'adresses simples séparées par une virgule. Toutes les combinaisons sont possibles. | ||
Ligne 318: | Ligne 378: | ||
* combinaison ''/ER/,n'' : La plage est constituée à partir de la première ligne vérifiant l'expression régulière jusqu'à la ligne de numéro ''n''. | * combinaison ''/ER/,n'' : La plage est constituée à partir de la première ligne vérifiant l'expression régulière jusqu'à la ligne de numéro ''n''. | ||
- | ====Les commandes de sed supportant les adressages universaux==== | + | ====Les commandes de sed supportant les adressages universaux et l'adressage double==== |
- | ^ ^ ^ | + | ^Commandes ^Significations ^ |
- | |d et D|supprimer | | + | |d |supprimer | |
- | |p et P |afficher avec ''-n'' | | + | |p |afficher avec ''-n'' | |
| = |afficher n° de ligne(s) | | | = |afficher n° de ligne(s) | | ||
|y/..../..../ | translittération | | |y/..../..../ | translittération | | ||
|c\texte |changement de texte| | |c\texte |changement de texte| | ||
- | ====Exemples ==== | ||
===Préparation === | ===Préparation === | ||
<code text sed-cmd> | <code text sed-cmd> | ||
Ligne 347: | Ligne 406: | ||
- | ==="p" : affichage === | + | ===="p" : affichage ==== |
<code user> | <code user> | ||
sed -n '/.*,[[:space:]]/,10p' sed-cmd | sed -n '/.*,[[:space:]]/,10p' sed-cmd | ||
Ligne 357: | Ligne 416: | ||
</code> | </code> | ||
- | ==="d" : suppression === | + | ===="d" : suppression ==== |
<code user> | <code user> | ||
sed '/tes/,10d' sed-cmd | sed '/tes/,10d' sed-cmd | ||
Ligne 373: | Ligne 432: | ||
et son adieu | et son adieu | ||
</code> | </code> | ||
- | === "=" numérotation=== | + | |
+ | ==== "=" numérotation==== | ||
<code user> | <code user> | ||
sed '1,$=' sed-cmd | sed '1,$=' sed-cmd | ||
Ligne 410: | Ligne 470: | ||
</code> | </code> | ||
- | === "y" : translittération=== | + | ==== "y" : translittération==== |
<code user> | <code user> | ||
sed '2,$!y/a/A/' sed-cmd | sed '2,$!y/a/A/' sed-cmd | ||
Ligne 432: | Ligne 492: | ||
</code> | </code> | ||
- | === "c" : changement de texte=== | + | ==== "c" : changement de texte==== |
<code user> | <code user> | ||
sed -e '3,$c\ | sed -e '3,$c\ | ||
Ligne 448: | Ligne 508: | ||
</code> | </code> | ||
- | ====Commandes de sed ne supportant que les adressages simples==== | ||
- | ^ ^ ^ | ||
- | |i\texte |insérer du texte | | ||
- | |a\texte |ajouter du texte | | ||
- | |||
- | |||
- | ==="i" : insertion avant la ligne d'adressage=== | ||
- | <code user> | ||
- | sed -i '1i\Ton sentiment comme atmosphère' sed-cmd | ||
- | </code> | ||
- | <code user> | ||
- | cat sed-cmd | ||
- | </code> | ||
- | Ton sentiment comme atmosphère | ||
- | automne | ||
- | mon bel automne | ||
- | dans les vergers | ||
- | du fond du ciel | ||
- | les éperviers | ||
- | de tes yeux planent | ||
- | tes feuilles | ||
- | tes fruits, ta pomme | ||
- | et le cerf, et son brame | ||
- | à jamais aimés | ||
- | de l'homme | ||
- | en ton cheveu | ||
- | me donnent | ||
- | et des langueurs | ||
- | et son adieu | ||
- | </code> | ||
- | |||
- | === "a" : ajout après l'adressage=== | ||
- | <code user> | ||
- | sed -e '1a\ ' -e '2,$s/^/ /' -i sed-cmd | ||
- | </code> | ||
- | <code user> | ||
- | cat sed-cmd | ||
- | </code> | ||
- | <code> | ||
- | Ton sentiment comme atmosphère | ||
- | |||
- | automne | ||
- | mon bel automne | ||
- | dans les vergers | ||
- | du fond du ciel | ||
- | les éperviers | ||
- | de tes yeux planent | ||
- | tes feuilles | ||
- | tes fruits, ta pomme | ||
- | et le cerf, et son brame | ||
- | à jamais aimés | ||
- | de l'homme | ||
- | en ton cheveu | ||
- | me donnent | ||
- | et des langueurs | ||
- | et son adieu | ||
- | </code> | ||
=====La commande "s"===== | =====La commande "s"===== | ||
Ligne 1114: | Ligne 1117: | ||
</code> | </code> | ||
- | ---------- | + | =====Les commande fonctionnant en rapport avec d'autres commandes ===== |
- | <note tip> | + | |
- | **Toutes commandes présentées jusqu'ici,**\\ | + | |
- | [[utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste#les-commandes-de-sed-supportant-les-adressages-universaux|celles regroupées en fonction des adressages universaux]],\\ | + | |
- | [[utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste#la-commande-s|la commande ''s'']],\\ | + | |
- | et [[utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste#commandes-indiquant-en-elle-meme-un-adressage-sed|les commandes adressant en-elle-même un adressage à sed]],\\ | + | |
- | utilisent principalement le mécanisme suivant :\\ | + | |
- | > Lecture d'une ligne du fichier d'entrée dans l'espace de travail à laquelle est appliquée chaque commande du script séquentiellement. | + | ^Commandes ^Significations ^ |
- | > Lorsque la fin d'une ligne de commande sed est atteinte, la ligne enregistrée et travaillée est alors envoyée sur la sortie standard,\\ | + | |N |nouvelle ligne | |
- | > Puis l'espace de travail est effacé ; | + | |D |supprimer (en rapport à \n)| |
- | > Autrement dit, __leur fonctionnement se base sur une utilisation simple du //"pattern space"//__. | + | |P |afficher (en rapport à \n) | |
- | + | ||
- | __**La notion de "pattern space"**__\\ | + | |
- | + | ||
- | C'est __la mémoire principale (tampon)__ qui permet à sed de travailler ; on la nomme aussi "espace de travail". C'est là que sont enregistrées les données.\\ | + | |
- | + | ||
- | Mais sed possède __deux sortes de mémoire tampon__. La __deuxième est appelée "espace annexe" ou "hold space"__.\\ | + | |
- | Cette dernière est un espace mémoire où les données (la ou les ligne(s)) peuvent être enregistrées provisoirement.\\ | + | |
- | Certaines commandes permettent de modifier l'adressage des lignes tel qu'il est enregistré dans l'une de ces mémoires.\\ | + | |
- | D'autres, permettent aussi un échange de données d'une mémoire à l'autre.\\ | + | |
- | + | ||
- | **Il reste à présenter :** | + | |
- | * Les commandes multi-lignes (N,D,P) | + | |
- | * Les commandes utilisant la mémoire annexe (h,H,g,G,x) | + | |
- | * Les commandes de tests faisant appel à des étiquettes (:,b,t,T) | + | |
- | </note> | + | |
- | ------------- | + | |
====La commande N==== | ====La commande N==== | ||
Ligne 1172: | Ligne 1153: | ||
La commande efface l'espace de travail jusqu'à un caractère délimitant une nouvelle ligne.\\ | La commande efface l'espace de travail jusqu'à un caractère délimitant une nouvelle ligne.\\ | ||
On en sert en association avec la commande N pour supprimer un saut de ligne consécutif à un saut de ligne ;\\ | On en sert en association avec la commande N pour supprimer un saut de ligne consécutif à un saut de ligne ;\\ | ||
- | autrement dit, pour remplacer plusieurs sauts de ligne par un seul saut de ligne. | + | autrement dit, pour remplacer plusieurs sauts de ligne par un seul saut de ligne.\\ |
===Rappel :=== | ===Rappel :=== | ||
* '' /^$/ '' : une ligne vide | * '' /^$/ '' : une ligne vide | ||
Ligne 1203: | Ligne 1185: | ||
====La commande P (print) ==== | ====La commande P (print) ==== | ||
La commande "P" affiche le contenu de l'espace de travail jusqu'au premier caractère délimitant une nouvelle ligne (\n).\\ | La commande "P" affiche le contenu de l'espace de travail jusqu'au premier caractère délimitant une nouvelle ligne (\n).\\ | ||
+ | |||
+ | <code user> | ||
+ | echo -e "ligne1 ligne2 ligne3" | sed '{P;s/ /\n/g}' | ||
+ | </code> | ||
+ | <code> | ||
+ | ligne1 ligne2 ligne3 | ||
+ | ligne1 | ||
+ | ligne2 | ||
+ | ligne3 | ||
+ | </code> | ||
+ | |||
+ | > La commande P affiche le contenu de l'espace de travail "ligne1 ligne2 ligne3" sur lequel elle applique la substitution de la fin de l'espace en nouvelle ligne \n. | ||
+ | |||
+ | ---------- | ||
+ | <note tip> | ||
+ | **Toutes commandes présentées jusqu'ici,**\\ | ||
+ | *[[utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste#les-commandes-de-sed-supportant-les-adressages-universaux|celles regroupées en fonction des adressages universaux]]\\ | ||
+ | *[[utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste#la-commande-s|la commande ''s'']]\\ | ||
+ | *[[utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste#commandes-indiquant-en-elle-meme-un-adressage-sed|les commandes adressant en-elle-même un adressage à sed]]\\ | ||
+ | *[[utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste#les-commande-fonctionnant-en-rapport-avec-d-autres-commandes |Les commande fonctionnant en rapport avec d'autres commandes]]\\ | ||
+ | **utilisent principalement le mécanisme suivant :**\\ | ||
+ | |||
+ | > Lecture d'une ligne du fichier d'entrée dans l'espace de travail à laquelle est appliquée chaque commande du script séquentiellement. | ||
+ | > Lorsque la fin d'une ligne de commande sed est atteinte, la ligne enregistrée et travaillée est alors envoyée sur la sortie standard, | ||
+ | > puis l'espace de travail est effacé ;\\ | ||
+ | > Autrement dit, __leur fonctionnement se base sur une utilisation simple du //"pattern space"//__ à partir duquel un travail ligne à ligne est effectué. | ||
+ | |||
+ | __**La notion de "pattern space"**__\\ | ||
+ | |||
+ | C'est __la mémoire principale (tampon)__ qui permet à sed de travailler ; on la nomme aussi "espace de travail". C'est là que sont enregistrées les données.\\ | ||
+ | |||
+ | Mais sed possède __deux sortes de mémoire tampon__. La __deuxième est appelée "espace annexe" ou "hold space"__.\\ | ||
+ | Cette dernière est un espace mémoire où les données (la ou les ligne(s)) peuvent être enregistrées provisoirement.\\ | ||
+ | Certaines commandes permettent de modifier l'adressage des lignes tel qu'il est enregistré dans l'une de ces mémoires.\\ | ||
+ | D'autres, permettent aussi un échange de données d'une mémoire à l'autre.\\ | ||
+ | |||
+ | **Il reste à présenter :** | ||
+ | * Les commandes utilisant la mémoire annexe (h,H,g,G,x) | ||
+ | * Les commandes de tests faisant appel à des étiquettes (:,b,t,T) | ||
+ | </note> | ||
+ | ------------- | ||