[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Linux-31] Insertion avec SED



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