Re: sed ignorer une occurence
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
Reply to: