[Résolu]Perl5 Regexp ^M

Bonjour,

je me heurte à la question suivante:
comment substituer la chaine de fin de ligne codé
« ^M » -écrit avec le clavier comme «^V ^M » -
dans le fichier source par une autre chaine (en l’occurence, soit \n pour envoyer la suite à la ligne, soit « \n\n » ou « \ » pour que LaTeX crée un paragraphe)

J’avoue me perdre régulièrement dans les questions de codage de caractère de la doc de Perl.

Merci

Bonjour josephtux

Fin de ligne msdos <=> CRLF <=> hexa 0d0a <=> \r\n

Fin de ligne unix <=> LF <=> hexa 0a <=> \n


Donc, avec sed j’utilise :

s/\r\n/\n/g;

ou bien :

s/\x0d\x0a/\x0a/g;

Mais je connais pas les regexp de perl

Salut,

Il existe une commande dos2unix dans le paquet dos2unix qui fait très bien le boulot.

Merci MicP et Almtesh ,

je connais ces commandes.

Ma question concerne plus spécifiquement la technique sous Perl5.
Il s’agit d’un traitement de chaînes de caractères dans un script Perl, en utilisant une substitution par regex.
La question me semble être plus précisément: comment transcrire ou présenter la chaine de fin de ligne
— présentée sous la forme ^M dans le fichier texte —
dans la regex, pour la remplacer par la chaine « \n » (ou « \n\n »).

Je précise qu’il ne s’agit que de Linux.

Comme je le disais plus haut, je ne connais pas perl,

Mais après avoir lu quelques exemples, peut-être qu’avec :

perl -p -e 's/\r\n/\n/g' < fichWinEntré.txt > fichUnixSortie.txt

Ou bien, pour convertir directement un fichier :

perl -i -p -e 's/\r\n/\n/g' fichÀconvertir.txt


C’est \r\n(<=> hexa 0d0a) qui est présenté sous la forme ^M
et qui sera remplacé par \n (<=> hexa 0a) une fois passé par la regexp ‘s/\r\n/\n/g’


Montre nous à quel endroit de ton script la regexp doit être appliquée
en nous donnant au moins l’extrait de script (ou le script complet) que tu compte modifier

Merci

Ce script fait 200 lignes, encore non fonctionnel (correction de BUG - algorithme incomplet-) mais la question me semble tenir dans le format d’entrée/sortie du texte, qui contient un caractère affiché en « ^M », aussi bien en entrée qu’en sortie.

Je ne travaille que sous Linux, Jessie (donc) en UTF8, avec Perlv5.20.2.

Cet élément est devenu secondaire, puisque je doit d’abord régler une question plus importante.

Je pense régler ça demain, et revient vers vous ensuite (avec ma question et un script simplifié, ou avec une réponse, si la nuit me porte conseil…)

Merci pour votre aide

bonne nuit et à demain.

Merci

La fièvre et la grippe passées, je pense avoir trouvé l’explication.

Le texte traité est issu d’un formulaire pdf que j’ai créé. Mais ceux qui les ont complété l’on effectivement fait sous windows.

Quand à ces effets, ils on été nuls, car traduits automatiquement en retour à la ligne, sans intervention de ma part.
Simplement désagréables pour la présentation du source LaTeX

On ne devrait jamais poster pendant la fièvre :wink: