Caractere ^M < control-v >et< enter > pour un bash

Bonjour mes sauveurs,
J’ai un fichier (Si, si, c’est vrai… En fait, même deux ou trois… :blush:) J’ai un fichier que je souhaite convertir (iso-8859-1 vers UTF-8). Pour ça, j’utilise iconv.
Je le transforme a ma sauce. Pour ça, j’utilise un savant mélange de sed et de tr.
Mon énorme problème:
Je souhaiterai me débarasser d’un caractère spécial qui est ^M (< c o n t r o l - v>< e n t e r >).
Ah oui, j’oubliais… Etant un gros fainéant, c’est pas vraiment moi qui travail mais mon ami bash

Petite illustration
Fichier1
Août
01
Pierre *0000/000.000*
02
Marie *1111/111.111*

FichierFinale
Août
01;Pierre *0000/000.000*;
02;Marie *1111/111.111*;

Mais je n’arrive que a:
^MAoût^M;01^M;^MPierre *0000/000.000*;^M02^M;Marie *1111/111.111*;^M…

Pour ce resultat médiocre, je fais:
$ iconv -f iso-8859-1 -t UTF-8 monFichier -o monAutreFichier
$ less monAutreFichier | tr ‘\n’ ‘;’ > encoreUnFichier

$ sed “s/^M//g” encoreUnFichier > fichierBeaucoup
Cette ligne la, si je la fait en console, ca marche. Ben oui, la, je sais faire le caractère ^M
Par contre dans mon bash… :cry:

Quelqu’un pourrais me dire comment faire? j’avoue coincer totalement.

Bonjour

Je pense qu’il doit s’agir de fichiers contenant des “fin de ligne” de type msDos => hexa 0D0A
qui sont différents des “fin de ligne” de type Unix => hexa 0A

Essaye de visualiser le fichier avec :

sed 's/\x0D$//' nomFichier

Si le résultat te convient,
l’option i te permettra d’appliquer la modification au fichier

sed -i 's/\x0D$//' nomFichier

^M c’est des fins de ligne Window$ ?
Un petit coup de dos2unix pour convertir en fin de ligne unix.
(ou un tr -d '\r')

1 J'aime

« dans ton bash » ? tu veux dire dans l’éditeur avec lequel tu écris ton script bash !?
mais quel est cet éditeur ?

Ou la boulette…

Oui, je confirme… Dans l’éditeur qui est nano

Je viens de tester avec:

sed “s/\x0D$//” nomFichier

Et c’est encore une fois, une réussite… Merci a vous MicP

@P_tit_g:
Pour votre solution

tr -d ‘\r’

Je n’ai encore testé mais je le ferais plus tard.

donc, dans nano, il faut taper Alt-V et Enter.

Non, justement…

Ca ne fonctionnais pas, il a fallut utiliser le

sed “s/\x0D$//” nomFichier

Conseillé par MicP

Je n’ai pas essayé avec les autres propositions par contre.

$ echo "bla
bla" > fic_Dos
$ vim +set\ ff=dos fic_Dos
$ cat -A fic_Dos
bla^M$
bla^M$
$ nano remDosEnd #j'écris le retour de ligne au format DOS comme indiqué précédemment.
$ cat -A remDosEnd 
#!/bin/sh$
$
sed 's/^M//g' "$1"$
$ chmod +x remDosEnd
$ ./remDosEnd fic_Dos  | cat -A
bla$
bla$