Accéder au contenu.
Menu Sympa

linux-31 - Re: [Linux-31] Insertion avec SED

Objet : Discussions sur le logiciel libre

Archives de la liste

Re: [Linux-31] Insertion avec SED


Chronologique Discussions 
  • From: jpcas <jpcas AT free.fr>
  • To: linux-31 AT culte.org
  • Subject: Re: [Linux-31] Insertion avec SED
  • Date: Sun, 8 Apr 2018 23:00:37 +0200

Le 08/04/2018 à 22:34, Pierre ESTREM (via linux-31 Mailing List) a écrit :
> Je suis incapable de comprendre cette commande...
> Elle est laide, mais elle fait le job !

On va essayer de détailler…

En gros l'idée c'est de tout mettre sur une seule ligne dans le buffer,
la mémoire principale de sed. Puis de rechercher la 1ère occurrence de
ta regex et de quitter.

:z
On pose un étiquette pour pouvoir s'y brancher sur demande.

;
Le séparateur de commande.

N
On ajoute la ligne suivante dans la mémoire principale de sed.

$! bz
Si la fin du fichier n'est pas atteinte (le signe dollar représente ici
la dernière ligne, le point d'exclamation représentant la négation), on
se branche (commande "b") à l'étiquette ":z" et on recommence.

s/.*<property.*/COUCOU...\n&/1M
Quand la dernière ligne est atteinte, on applique la commande de
substitution. On remplace donc toute la regex par "COUCOU" suivi d'un
saut de ligne (\n). Le caractère esperluette étant un raccourci pour
représenter tout le contenu de la partie gauche de la commande, la regex
en fait.

Le "1" indique qu'on ne veut effectuer la substitution que sur la 1ère
regex rencontrée.

Le "M" permet de traiter chaque morceau de ligne (représentée par le
caractère "\n") individuellement alors qu'en réalité il n'y a qu'une
seule ligne présente dans la mémoire principale.

En espérant avoir été à peu près clair .

JP



Archives gérées par MHonArc 2.6.19+.

Haut de le page