# \[Résolu\]Perl5 Regexp ^M

**URL:** <https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439>\
**Category:** Programmation\
**Created:** [Janvier 22, 2017, 4:26 UTC](https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439 "2017-01-22T16:26:00Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Janvier 22, 2017, 4:26 UTC](https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439/1 "2017-01-22T16:26:00Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 22, 2017, 4:46 UTC](https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439/2 "2017-01-22T16:46:45Z")

</div>

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**

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Janvier 23, 2017, 8:26 UTC](https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439/3 "2017-01-23T08:26:25Z")

</div>

Salut,

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

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Janvier 23, 2017, 12:33 UTC](https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439/4 "2017-01-23T12:33:27Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 23, 2017, 3:34 UTC](https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439/5 "2017-01-23T15:34:15Z")

</div>

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 **‹&nbsp;s/\r\n/\n/g&nbsp;›**

* * *

> [@josephtux](#):
>
> Il s’agit d’un traitement de chaînes de caractères dans un script Perl

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

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Janvier 23, 2017, 8:14 UTC](https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439/6 "2017-01-23T20:14:26Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Janvier 23, 2017, 10:00 UTC](https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439/7 "2017-01-23T22:00:56Z")

</div>

bonne nuit et à demain.

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Février 2, 2017, 11:43 UTC](https://www.debian-fr.org/t/resolu-perl5-regexp-m/72439/8 "2017-02-02T11:43:55Z")

</div>

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 😉
