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 [29/07/2014 12:43] Hypathie [Les rapports d'implication options de sed <=> commandes de sed] |
utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste [29/07/2014 19:26] Hypathie [Les rapports d'implication /adressages/ <=> commandes de sed] |
||
---|---|---|---|
Ligne 48: | Ligne 48: | ||
^options ^significations ^ | ^options ^significations ^ | ||
|''-e'' |enchaîner plusieurs commandes | | |''-e'' |enchaîner plusieurs commandes | | ||
- | |''-r'' |utiliser les expressions régulières étendues dans un script | | + | |''-r'' |utiliser les [[utilisateurs:hypathie:tutos:sed-et-les-expressions-rationnelles|expressions régulières étendues]] dans un script | |
|''-n'' |mode silencieux : permet de ne rien modifier\\ associée au drapeau p (print)\\ (affichage sur la sortie standard) | | |''-n'' |mode silencieux : permet de ne rien modifier\\ associée au drapeau p (print)\\ (affichage sur la sortie standard) | | ||
|''-f'' |Les commandes sont lues à partir d'un fichier préalablement rédigé. | | |''-f'' |Les commandes sont lues à partir d'un fichier préalablement rédigé. | | ||
Ligne 125: | Ligne 125: | ||
=== Options -i avec -r , -n , -e === | === Options -i avec -r , -n , -e === | ||
- | Lorsqu'on a besoin d'adresser au moyen d'une //E.R.// étendue, et de modifier réellement, il faut associer les options ''-r'' et ''-i''.\\ | + | Lorsqu'on a besoin d'adresser au moyen d'une [[utilisateurs:hypathie:tutos:sed-et-les-expressions-rationnelles|expression régulière étendue]], et de modifier réellement, il faut associer les options ''-r'' et ''-i''.\\ |
La syntaxe est toujours ''-ri'' , et non pas -ir.\\ | La syntaxe est toujours ''-ri'' , et non pas -ir.\\ | ||
On peut associer d'autres options, après ''-ri'' | On peut associer d'autres options, après ''-ri'' | ||
Ligne 309: | Ligne 309: | ||
* un numéro de ligne (les lignes sont numérotées à partir du chiffre 1); | * un numéro de ligne (les lignes sont numérotées à partir du chiffre 1); | ||
* le caractère ''$'' désignant la dernière ligne; | * le caractère ''$'' désignant la dernière ligne; | ||
- | * une expression régulière encadrée par des caractères ''/''; | + | * par l'encadrement /ER/cmd : [[utilisateurs:hypathie:tutos:sed-et-les-expressions-rationnelles|une expression régulière]] encadrée par des caractères ''/''; |
Ligne 349: | Ligne 349: | ||
</code> | </code> | ||
- | >Le titre "Ton sentiment comme atmosphère" est ajouté sur la la sortie standard. | + | >Le titre "Ton sentiment comme atmosphère" est ajouté sur la sortie standard. |
=== "a" : ajout après l'adressage=== | === "a" : ajout après l'adressage=== | ||
Ligne 356: | Ligne 356: | ||
</code> | </code> | ||
- | >Une ligne vide est ajoutée en deuxième ligne par la première ajout que si on indique au moins un caractère | + | >Pour ajouter une ligne vide en deuxième ligne avec la commande (a), il faut ajouter au moins un caractère, ici, "espace". |
- | >Il est plus simple, en cas de succession de commandes parmi lesquelles figure __une commande d'ajout__ de ligne, | + | >Pour désigner une ligne précises aux commandes qui suivent __une commande d'ajout__ de ligne, il peut être plus simple d'utiliser l'adressage par d'encadrement (par exemple ici, '' /^mon/,$s/^/ / '', ou '' 2,$s/^/ / ''). |
- | >d'utiliser l'adressage d'encadrement /^mon/. | + | |
- | + | ||
- | <code user>sed -e '1a\ ' -e '/^mon/,$s/^/ /' sed-automn.txt</code> | + | |
===Utiliser conjointement i et a === | ===Utiliser conjointement i et a === | ||
Ligne 367: | Ligne 364: | ||
* en insérant le titre "Ton sentiment comme atmosphère" | * en insérant le titre "Ton sentiment comme atmosphère" | ||
* en insérant une ligne ne comportant qu'un espace, | * en insérant une ligne ne comportant qu'un espace, | ||
- | * en ajoutant un espace à partir de la ligne /^automne/ | + | * en ajoutant un espace à partir de la ligne '' /^automne/ '' |
<code user> | <code user> | ||
Ligne 375: | Ligne 372: | ||
</code> | </code> | ||
- | >Il est à noter les adressages utilisés pour obtenir ce résultat, par rapport à ceux utilisés précédemment | + | On aurait pu utiliser utiliser la ligne de commande qui suit, pour obtenir le même résultat. |
- | >pour les exemples où les commandes i et a étaient utilisées seules. | + | |
- | + | ||
- | On aurait pu utiliser pour obtenir le même résultat : | + | |
<code user> | <code user> | ||
sed -e '1i\Ton sentiment comme atmosphère'\ | sed -e '1i\Ton sentiment comme atmosphère'\ | ||
Ligne 385: | Ligne 379: | ||
</code> | </code> | ||
+ | |||
+ | >Il est à noter quels ont été les adressages utilisés pour obtenir ce résultat, par rapport à ceux qui avaient été utilisés précédemment | ||
+ | >(pour les exemples où les commandes i et a étaient utilisées seules). | ||
>Voir la prochaine note. | >Voir la prochaine note. | ||
Ligne 452: | Ligne 449: | ||
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. | ||
- | * 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 numéros de ligne ''**n,m**cmd_sed'' : (''** n **'' et ''** m **'' sont des nombres) l'analyseur de sed traite la plage de lignes commençant de la ligne ''** n **'' jusqu'à la ligne ''** m **''.\\ |
- | * 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.)) | + | * deux encadrements ''**/ER1/,/ER2/**'' : l'analyseur de sed traite la plage de lignes commençant à partir de la première ligne reconnue par //ER1// jusqu'à la ligne reconnue par //ER2//, en prenant le nombre de lignes le plus large((c'est-à-dire, qu'il peut y avoir une ligne avec ER1 dans la plage ''**n,/ER/**''.)) |
- | * 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 //ER// |
- | * 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/,m**'' : La plage est constituée à partir de la première ligne vérifiant //ER// jusqu'à la ligne de numéro ''** m **''. |
====Les commandes de sed supportant les adressages universaux et l'adressage double==== | ====Les commandes de sed supportant les adressages universaux et l'adressage double==== | ||
Ligne 593: | Ligne 590: | ||
devient Vestale | devient Vestale | ||
</code> | </code> | ||
+ | |||
+ | >Le caractère # commande la ligne. | ||
===Lancer le script avec l'option -i === | ===Lancer le script avec l'option -i === | ||
Ligne 1290: | Ligne 1289: | ||
</code> | </code> | ||
- | >la première ligne vide est matchée par /^$/ ; | + | >La première ligne vide est validée par se correspondance avec /^$/ ; |
>puis, N rend utilisable le caractère de nouvelle ligne (\n); | >puis, N rend utilisable le caractère de nouvelle ligne (\n); | ||
- | >puis D supprime de l'espace de travail la ligne vide /^\n$/D enregistrée précédemment, | + | >puis D supprime de l'espace de travail la ligne vide /^\n$/D enregistrée précédemment; |
- | >puis il passe à la ligne suivant qui est aussi une ligne vide, il fait le même travail, | + | >puis il passe à la ligne suivant qui est aussi une ligne vide, il fait le même travail; |
>enfin, il passe à la ligne "fin" qui ne correspond pas à /^$/, et affiche le résultat avant de sortir. | >enfin, il passe à la ligne "fin" qui ne correspond pas à /^$/, et affiche le résultat avant de sortir. | ||
- | > Ainsi il peut supprimer ligne à ligne autant de ligne vide, afin que les les lignes du texte soit espace au plus d'un saut de ligne. | + | > Ainsi il peut supprimer ligne à ligne autant de lignes vides successives qu'il y en aurait, afin que toutes les lignes du texte ne soient espacées au plus que d'un seul saut de ligne. |
====La commande P (print) ==== | ====La commande P (print) ==== |