A propos de sed

Bonjour,

j’ai trouvé sur le net une commande sed pour transformer tous les retours chariots en espaces:

sed -i ':z;N;s/\n/ /;bz' mon_fichier

ça marche bien et je comprends bien ce que signifie la partie s/\n/ / mais je ne vois pas ce que veut dire le reste!

J’ai bien essayé man sed et info sed mais ça ne me parle pas trop…
Si quelqu’un arrive à m’expliquer simplement, je lui en serais très reconnaissant!

Merci!

Le b c’est pour branch,
donc bz c’est un saut vers le label z.

Ça tombe bien, :z déclare justement un label z
Ensuite N rajoute la ligne suivante au “pattern space”.

C’est donc une boucle qui successivement lit une ligne et substitue un saut de ligne par un espace sur le “pattern space”. Ce dernier va devenir de plus en plus gros et être traité systématiquement par la subsitution, ce qui ne devrait pas être très satisfaisant pour des flux de taille importante :wink:

Si ton but c’est juste de remplacer les sauts de ligne par des espaces (et pas de jouer avec sed), je te propose la forme suivante :

Merci, c’est très clair!

Par contre la commande avec tr me rajoute une virgule à la fin, même s’il n’ya pas de saut de ligne… Comment faire pour s’en débarrasser?

Je ne sais pas, mais je ne pense pas que ça vienne de tr…