salut, Le Thu, Jun 01, 2023 at 10:46:00AM +0000, benoit a écrit : > Je voudrais reformater du texte en colonne, qui a été justifié avec des > retours > à la ligne (\n) et des "-" de coupure de mot > ex: > Je voudrais reformater du texte en colonne, qui a été just- «--- > ifié avec des retours à la ligne (\n) et est - de coupure de > mot. > > % sed -rz '{s/-\n//g;s/\n//g}' format.txt
<<\% sed -rz 's/-\n//g; s/([^.\n])\n/\1/g' | tr -s ' ' | fmt -w72 Je suis pas sur d'avoir compris le pb. Je voudrais reformater du texte en colonne, qui a été just- ifié avec des retours à la ligne (\n) et est - de coupure de mot. % Si la commande correspond bien à ton besoin, tu peux directement l'utiliser dans vi grace à un range. si tu as fais une selection visuelle, tappes !sed -rz 's/-\n//g; s/([^.\n])\n/\1/g' | tr -s ' ' | fmt -w72 les prochains usages de ! rappellent le dernier filtre, tu n'auras plus qu'a taper !! au lieu de ! et rappeler la commande. Évidement ça marche avec tous les ranges :) astuce: mettre le filtre dans un fichier à part pour en faciliter la maintenance: :sp monfiltre :!chmod a+x % et ensuite tu peux écrire ton filtre en espaçant un peu et en commentant #!/bin/sh # note1: je ne vire le retour à la ligne que si il est précédé # d'autre chose qu'un espace sed -rz ' s/-\n//g s/([^.\n])\n/\1/g # cf. note1 ' | tr -s ' ' | fmt -w72 et finalement filtrer avec <monrange>!./monfiltre je fais concis pour aller vite. n'hésite pas à me demander de plus amples explications si cette piste de plait. cordialement, marc