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 [27/07/2014 14:29] Hypathie [La commande s] |
utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste [27/07/2014 16:30] Hypathie [La commande s] |
||
---|---|---|---|
Ligne 48: | Ligne 48: | ||
</code> | </code> | ||
- | //Ce que j'appelle là "options_cmd_de_sed" est appelé selon la documentation "drapeaux", ou encore "options". Elle dépend de la connaissance des commandes de sed.// | + | //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 63: | Ligne 63: | ||
</code> | </code> | ||
- | Soit le fichier nommé "sed-options" : | + | <code text sed-options> |
- | <code> | + | |
Il est vraiment idiot, | Il est vraiment idiot, | ||
se balade sur un vélo | se balade sur un vélo | ||
Ligne 217: | Ligne 216: | ||
</note> | </note> | ||
- | =====Les rapport d'implication /adressages/ <=> commandes de sed===== | + | =====Les rapports d'implication /adressages/ <=> commandes de sed===== |
<note tip> | <note tip> | ||
**Analyse de l'implication : ''/adressages/'' <=> ''cmd_de_sed'' | **Analyse de l'implication : ''/adressages/'' <=> ''cmd_de_sed'' | ||
Ligne 241: | Ligne 240: | ||
=== le caractère d'exclusion (!)=== | === le caractère d'exclusion (!)=== | ||
<code text sed-options> | <code text sed-options> | ||
- | sed-options | ||
Il est vraiment idiot, | Il est vraiment idiot, | ||
se balade sur un vélo | se balade sur un vélo | ||
Ligne 283: | Ligne 281: | ||
<note important> | <note important> | ||
__Attention avec l'adressage simple !__\\ | __Attention avec l'adressage simple !__\\ | ||
- | * Avec l'adressage simple par numéro de lignes, seule la ligne indiquée par le numéro est traitée. | + | * Avec l'adressage simple par numéro de ligne, seule la ligne indiquée par le numéro est traitée. |
* Avec l'adressage simple par l'encadrement ''/'', toutes les lignes qui correspondent à ''/expression régulière/'' sont traitées . | * Avec l'adressage simple par l'encadrement ''/'', toutes les lignes qui correspondent à ''/expression régulière/'' sont traitées . | ||
</note> | </note> | ||
Ligne 290: | Ligne 288: | ||
===Adressage double === | ===Adressage double === | ||
- | C'est une paire d'adresses simples séparées 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. |
- | * deux numéro de ligne ''n,m**cmd_sed**'' : l'analyseur de sed traite les lignes comprises entre les deux adresses, et celles des adresses aussi.\\ | + | * deux numéros de ligne ''n,m**cmd_sed**'' : l'analyseur de sed traite les lignes comprises entre les deux adresses, et celles des adresses aussi.\\ |
- | * deux encadrements ''/ER1/,/ER2/'' : l'analyseur de sed traite les lignes comprises délimitées par les //E.R// de début et de fin en prenant le nombre de lignes le plus large((c'est-à-dire, si l'E.R. de début figure entre les deux adressages, il traite le plage la plus grande.)) | + | * deux encadrements ''/ER1/,/ER2/'' : l'analyseur de sed traite les lignes délimitées par les //E.R// de début et de fin en prenant le nombre de lignes le plus large((c'est-à-dire, si l'E.R. de début figure entre les deux adressages, il traite le plage la plus grande.)) |
* combinaison ''n,/ER/'' : La plage est constituée à partir de la ligne numéro ''n'', jusqu'à la première ligne reconnue par le //E.R.// | * combinaison ''n,/ER/'' : La plage est constituée à partir de la ligne numéro ''n'', jusqu'à la première ligne reconnue par le //E.R.// | ||
* 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''. | ||
Ligne 434: | Ligne 432: | ||
==="i" : insertion avant la ligne d'adressage=== | ==="i" : insertion avant la ligne d'adressage=== | ||
<code user> | <code user> | ||
- | sed '1i\Ton sentiment comme atmosphère' sed-cmd | + | sed -i '1i\Ton sentiment comme atmosphère' sed-cmd |
+ | </code> | ||
+ | <code user> | ||
+ | cat sed-cmd | ||
</code> | </code> | ||
- | <code> | ||
Ton sentiment comme atmosphère | Ton sentiment comme atmosphère | ||
automne | automne | ||
Ligne 457: | Ligne 457: | ||
=== "a" : ajout après l'adressage=== | === "a" : ajout après l'adressage=== | ||
<code user> | <code user> | ||
- | sed '1a\ ' sed-cmd | + | sed -e '1a\ ' -e '2,$s/^/ /' -i sed-cmd |
+ | </code> | ||
+ | <code user> | ||
+ | cat sed-cmd | ||
</code> | </code> | ||
<code> | <code> | ||
- | automne | + | Ton sentiment comme atmosphère |
- | mon bel automne | + | automne |
- | dans les vergers | + | mon bel automne |
- | du fond du ciel | + | dans les vergers |
- | les éperviers | + | du fond du ciel |
- | de tes yeux planent | + | les éperviers |
- | tes feuilles | + | de tes yeux planent |
- | tes fruits, ta pomme | + | tes feuilles |
- | et le cerf, et son brame | + | tes fruits, ta pomme |
- | à jamais aimés | + | et le cerf, et son brame |
- | de l'homme | + | à jamais aimés |
- | en ton cheveu | + | de l'homme |
- | me donnent | + | en ton cheveu |
- | et des langueurs | + | me donnent |
- | et son adieu | + | et des langueurs |
+ | et son adieu | ||
</code> | </code> | ||
Ligne 481: | Ligne 485: | ||
====Méthodes d'appel==== | ====Méthodes d'appel==== | ||
<code> | <code> | ||
- | s/motif/substitut/[indicateur] fichier | + | s/motif/substitut/[options_cmd_de_sed] fichier |
</code> | </code> | ||
ou | ou | ||
<code> | <code> | ||
- | cmd | s/motif/substitut/[indicateur] | + | cmd | s/motif/substitut/[options_cmd_de_sed] |
</code> | </code> | ||
Ligne 493: | Ligne 497: | ||
<code user> | <code user> | ||
s/motif/substitut/ | s/motif/substitut/ | ||
- | -> si motif = une regexp | + | -> si motif = une E.R |
-> alors subtitut = une chaîne de caractère | -> alors subtitut = une chaîne de caractère | ||
</code> | </code> | ||
- | >Pour Regexp | + | >Pour //E.R// |
>On peut utiliser la syntaxe habituelle, ou la syntaxe étendue avec l'option ''sed -r''. | >On peut utiliser la syntaxe habituelle, ou la syntaxe étendue avec l'option ''sed -r''. | ||
>Voir : [[utilisateurs:hypathie:tutos:sed-et-les-expressions-rationnelles]] | >Voir : [[utilisateurs:hypathie:tutos:sed-et-les-expressions-rationnelles]] | ||
Ligne 503: | Ligne 507: | ||
====Détail : la ligne de commande "s"==== | ====Détail : la ligne de commande "s"==== | ||
<code c> | <code c> | ||
- | s/expression1/expression2/[indicateur] | + | s/expression1/expression2/[options_cmd_de_sed] |
</code> | </code> | ||
===les séparateurs ( / )=== | ===les séparateurs ( / )=== | ||
Ligne 539: | Ligne 543: | ||
- | ===Les indicateurs=== | + | ===Les options_cmd_de_sed=== |
^ ^ ^ | ^ ^ ^ | ||
Ligne 616: | Ligne 620: | ||
La commande ''s'' supporte les [[utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste?&#les-adressages-universaux|adressages universaux]].\\ | La commande ''s'' supporte les [[utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste?&#les-adressages-universaux|adressages universaux]].\\ | ||
Elle permet en plus de nouveaux types d'adressage. | Elle permet en plus de nouveaux types d'adressage. | ||
- | ===Remarque sur l'adressages mixtes : 'n,/regexp/' ou '/regexp/,n' === | + | ===Remarque sur l'adressages mixtes : 'n,/E.R./' ou '/E.R./,n' === |
- | __1) 'n,/regexp/s/chaineA/chaineB'__ | + | __1) 'n,/E.R./s/chaineA/chaineB'__ |
''n'' est un nombre entier. | ''n'' est un nombre entier. | ||
- | On remplace chaîneA par chaîneB de la ligne ''n'' à la ligne comportant /regexp/.\\ | + | On remplace chaîneA par chaîneB de la ligne ''n'' à la ligne comportant /E.R./.\\ |
* Préparation : fichier "sed1.txt | * Préparation : fichier "sed1.txt | ||
Ligne 646: | Ligne 650: | ||
</code> | </code> | ||
- | __2) '/regexp/ns/chaîneA/chaîneB/'__ | + | __2) '/E.R./ns/chaîneA/chaîneB/'__ |
* Substitution à partir de la chaîne "orange" jusqu'à la ligne n° 5 | * Substitution à partir de la chaîne "orange" jusqu'à la ligne n° 5 | ||
Ligne 663: | Ligne 667: | ||
<note important> | <note important> | ||
- | Il faut trois "genres d'objets". Car si /regexp/ d'adressage correspond à chaîne, alors l'indication ''n'' n'arrêtera pas la substitution. | + | Il faut trois "genres d'objets". Car si /E.R./ d'adressage correspond à chaîne, alors l'indication ''n'' n'arrêtera pas la substitution. |
<code user> | <code user> | ||
sed '/[[:digit:]]/,3s/[[:digit:]]/GAGA/' sed1.txt | sed '/[[:digit:]]/,3s/[[:digit:]]/GAGA/' sed1.txt | ||
Ligne 805: | Ligne 809: | ||
</code> | </code> | ||
- | ====sed : commande d'adressage et script avancé ==== | + | =====sed : commande d'adressage et script avancé===== |