comment retirer les ^M dans une variable [shell] - Shell/Batch - Programmation
Marsh Posté le 01-09-2011 à 13:42:12
romegonic2011 a écrit : Bonjour, Je sais supprimer les ^M dans un fichier avec une commande du type : cat fichier_avec_^M |tr -d "\r" > fichier_sans_^M |
Essaie plutôt :
dos2unix fichier fichier |
romegonic2011 a écrit : Par contre je n'arrive pas à supprimer le ^M dans une variable, que cela soit en passant par tr ou sed, ou tout simplement par ksh. exemple : version=1.2.3.4^M echo $version Normalement ceci devrait marcher : version=$(eval echo ${version##*^M}); // récupère la plus grande partie d'une chaîne coupée en 2 via le séparateur "^M" Cette synthaxe fonctionne pourtant pour transformer par exemple "Toto est parti à la maison" en "Toto est parti " avec "à" comme séparateur. Quelqu'un aurait la synthaxe exacte s'il vous plaît ? je galère sur un truc nul ... je sais :-( Merci par avance. |
"^M" ne s'écrit pas "^" + "M", c'est un caractère spécial que tu peux obtenir avec la séquence de touches Ctrl+V Ctrl+M
et du coup :
foo=abcd[Ctrl+V Ctrl+M] |
Ou plus simple, avec PERL :
echo $foo | perl -pe 's/\r//;' > bar |
Marsh Posté le 01-09-2011 à 15:55:20
Bonjour Elmoricq,
Pour le fichier et dos2unix, en effet cela fonctionne aussi, sauf sur une machine / un OS ou dos2unix n'existe pas :
ksh: dos2unix: not found
(d'où le cat ..)
Par contre merci pour les explications concernant ^M, et comme je manipule une variable et que je n'ai pas envie d'un fichier temporaire, ta commande perl me plaît bien.
Merci pour la célérité et la qualité de la réponse.
Sujet résolu :-)
Marsh Posté le 01-09-2011 à 13:16:39
Bonjour,
Je sais supprimer les ^M dans un fichier avec une commande du type :
cat fichier_avec_^M |tr -d "\r" > fichier_sans_^M
Par contre je n'arrive pas à supprimer le ^M dans une variable, que cela soit en passant par tr ou sed, ou tout simplement par ksh.
exemple : version=1.2.3.4^M
echo $version
1.2.3.4^M
Normalement ceci devrait marcher :
version=$(eval echo ${version##*^M}); // récupère la plus grande partie d'une chaîne coupée en 2 via le séparateur "^M"
Cette synthaxe fonctionne pourtant pour transformer par exemple "Toto est parti à la maison" en "Toto est parti " avec "à" comme séparateur.
Quelqu'un aurait la synthaxe exacte s'il vous plaît ? je galère sur un truc nul ... je sais :-(
Merci par avance.