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 | ||
utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste [31/07/2014 19:52] Hypathie [Les rapports d'implication options de sed <=> commandes de sed] |
utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste [13/11/2014 09:31] (Version actuelle) Hypathie [sed par la méthode structuraliste] |
||
---|---|---|---|
Ligne 11: | Ligne 11: | ||
Michel Foucault | Michel Foucault | ||
+ | |||
+ | ===Références=== | ||
+ | |||
+ | * Illustration de man sed : [[http://www.scotchlinux.tuxfamily.org/doc/sed.php]] | ||
+ | * Exemples d'utilisation : [[http://www.system-linux.eu/index.php?post/2008/12/21/La-commande-Sed]] | ||
=====Introduction ===== | =====Introduction ===== | ||
Ligne 357: | Ligne 362: | ||
>Pour ajouter une ligne vide en deuxième ligne avec la commande (a), il faut ajouter au moins un caractère, ici, "espace". | >Pour ajouter une ligne vide en deuxième ligne avec la commande (a), il faut ajouter au moins un caractère, ici, "espace". | ||
- | >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/^/ / ''). | + | >Pour désigner une ligne précise aux commandes qui suivent __une commande d'ajout__ de ligne, il peut être plus simple d'utiliser l'adressage par encadrement (par exemple ici, '' /^mon/,$s/^/ / '', ou '' 2,$s/^/ / ''). |
===Utiliser conjointement i et a === | ===Utiliser conjointement i et a === | ||
Ligne 372: | Ligne 377: | ||
</code> | </code> | ||
- | On aurait pu utiliser utiliser la ligne de commande qui suit, pour obtenir le même résultat. | + | On aurait pu utiliser la ligne de commande qui suit, 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 410: | Ligne 415: | ||
<note important> | <note important> | ||
Attention !\\ | Attention !\\ | ||
- | + | ||
- | Si on utilise __plusieurs commandes d'ajout__, la charge de la mémoire tampon est si importantes | + | Si on utilise __plusieurs commandes d'ajout__, la charge de la mémoire tampon est si importante |
que sed se réfère à la numérotation des lignes du __fichier d'origine__ pour l'adressage par numéro de ligne __de toutes les commandes__!\\ | que sed se réfère à la numérotation des lignes du __fichier d'origine__ pour l'adressage par numéro de ligne __de toutes les commandes__!\\ | ||
Ligne 591: | Ligne 596: | ||
</code> | </code> | ||
- | >Le caractère # commande la ligne. | + | >Le caractère # commente la ligne. |
===Lancer le script avec l'option -i === | ===Lancer le script avec l'option -i === | ||
Ligne 945: | Ligne 950: | ||
On connaît donc le nombre de ligne(s) sautée(s) en faisant toujours ''m - 1''. | On connaît donc le nombre de ligne(s) sautée(s) en faisant toujours ''m - 1''. | ||
- | Et si ''n'' est égal à zéro, ''n'' devient la position ordinale 1 du fichier en plus l'adressage de début. Donc la //E.R.// sélectionne toutes les ''m''ièmes lignes à partir de la ligne ''n'', et saute m - 1 ligne(s). | + | Et si ''n'' est égal à zéro, ''n'' devient la position ordinale 1 du fichier, ainsi que l'adressage de début. Donc la //E.R.// sélectionne toutes les ''m''ièmes lignes à partir de la ligne ''n'', et saute m - 1 ligne(s). |
* ''1 ~ 2'' : sélection des lignes impaires : 1ière, 3ième, 5ième, etc.\\ En effet, de la première ligne du fichier jusqu'à ''m'', il y a 1 (m = 2 et 2 - 1 =1).\\ Il sera sauté 1 ligne (non-sélectionnée) et cela à partir de la ligne n°1 (n = 1 = la position ordinale).\\ Donc sélection de la première ligne, saut d'une ligne, sélection de la 3ième ligne, saut 1 ligne, etc. | * ''1 ~ 2'' : sélection des lignes impaires : 1ière, 3ième, 5ième, etc.\\ En effet, de la première ligne du fichier jusqu'à ''m'', il y a 1 (m = 2 et 2 - 1 =1).\\ Il sera sauté 1 ligne (non-sélectionnée) et cela à partir de la ligne n°1 (n = 1 = la position ordinale).\\ Donc sélection de la première ligne, saut d'une ligne, sélection de la 3ième ligne, saut 1 ligne, etc. | ||
Ligne 1043: | Ligne 1048: | ||
==== # : Commentaire (Aucune adresse autorisée)==== | ==== # : Commentaire (Aucune adresse autorisée)==== | ||
- | Le caractère ''#'' (dièse) commence un commentaire et ce jusqu'à la fin de la ligne.\\ | + | Le caractère dièse ( # ) commence un commentaire et ce jusqu'à la fin de la ligne.\\ |
- | Dans un script sed, il peut se trouver sur la même ligne qu'une commande, elle ne sera prise pour un commantaire.\\ | + | Dans un script sed, il peut se trouver sur la même ligne qu'une commande, elle ne sera pas prise pour un commentaire.\\ |
Si les deux premiers caractères d'un script sed sont "#n", l'option "-n" (no-autoprint) est alors forcée. | Si les deux premiers caractères d'un script sed sont "#n", l'option "-n" (no-autoprint) est alors forcée. | ||
Ligne 1067: | Ligne 1072: | ||
> Dans ce cas, sed affiche de la ligne 4 à la ligne 5. | > Dans ce cas, sed affiche de la ligne 4 à la ligne 5. | ||
- | > Puis la commande d supprime tout sauf les lignes de p et la ligne traitée par d. | + | > Puis la commande d supprime tout sauf les lignes traitées par p et d. |
===Utilisation de la commande ''q''=== | ===Utilisation de la commande ''q''=== | ||
Ligne 1087: | Ligne 1092: | ||
> Dans ce cas, la commande q adresse les 6 premières lignes dans la mémoire principale de sed, qui peut alors les utiliser une fois, donc pour une seule commande après q. | > Dans ce cas, la commande q adresse les 6 premières lignes dans la mémoire principale de sed, qui peut alors les utiliser une fois, donc pour une seule commande après q. | ||
- | > En effet, si l'adressage de la commande suivante "déborde" de celui de la commande q, alors sed affiche la ligne que la commande q a adressé à la mémoire principale. | + | > En effet, si l'adressage de la commande suivante "déborde" de celui de la commande q, alors sed affiche la ligne que la commande q a adressée à la mémoire principale. |
<code> | <code> | ||
Ligne 1164: | Ligne 1169: | ||
Il ne doit y avoir qu'un seul espace entre la commande et le nom du "fichier lu".\\ | Il ne doit y avoir qu'un seul espace entre la commande et le nom du "fichier lu".\\ | ||
- | Il faut donner le chemin absolu du "fichier lu" | + | Il faut donner le chemin absolu du "fichier lu" si le terminal ne se trouve pas dans le répertoire parent de ce "fichier lu". |
- | si le terminal ne se trouve dans le répertoire parent de ce "fichier lu". | + | |
===Préparation=== | ===Préparation=== | ||
* soit le fichier "sed-fich-lu.txt" : | * soit le fichier "sed-fich-lu.txt" : |