web-dev-qa-db-fra.com

comment supprimer les caractères ctrl M lors du transfert de fichiers de window à unix avec Tectia?

Je souhaite transférer des fichiers de Windows vers Unix à l'aide de Tectia. Mais le problème est que lorsque ces fichiers sont transférés (en mode Ascii ou binaire) et ouverts à l'aide de VI, nous obtenons ^ M caractères. Est-il possible que ces ^ M caractères n'apparaissent pas en premier lieu?.

9
Ravi Goklani

Merci à tous pour votre aide. J'ai résolu ce problème en utilisant une solution de contournement. Windows utilise CR + LF (\ r\n) comme fin de ligne et Unix utilise LF (\ n) comme fin de ligne.J'ai pris le fichier Windows et l'a remplacé le CR + LF (\ r\n) avec LF (\ n) dans le code lui-même sans aucun utilitaire. Cela a rendu le fichier compatible pour les systèmes Unix puis j'ai transféré le fichier en utilisant SFTP et cela fonctionnait sous Unix.

1
Ravi Goklani

Comment j'ai pu l'enlever dans l'éditeur v:

  • Après :%s/ puis appuyez sur ctrl+V puis ctrl+M. Cela vous donnera ^M
  • Puis //g (ressemblera à: :%s/^M), appuyez sur Enter devrait être tout enlevé.

Bonne chance!

17
Rajesh

Vous pouvez installer et utiliser dos2unix . Après l'installation, lancez simplement:

>dos2unix yourfile.txt 
9
alfasin

Si vous devez simplement supprimer les caractères ^M (ne les remplacez pas par \n):

sed -i -e 's/\r//g' yourfile.txt

Si vous voulez les remplacer par \n:

sed -i -e 's/\r/\n/g' yourfile.txt
6
JellicleCat

Essayez d’exécuter ce qui suit sur votre terminal (vous devrez peut-être l’installer au préalable):

fromdos <your-file>
3
Quetzalcoatl

Encore une astuce à enlever Ctrl+M dans l'éditeur vi:

:%s/^V^M//g

Pour plus d'astuce à retirer Ctrl+M caractères

3
Vinoth
:%s/^V^M//
  1. g pas nécessaire du tout.

  2. %s - recherche et remplace le texte que vous souhaitez remplacer

  3. ^V^M à remplacer par "devrait être après une double barre oblique", gardez-le vide si vous souhaitez le remplacer par rien

1
Lakshminarayanan

Essayer 

tr -d '\015' <INPUT_FILE > OUTPUT_FILE
0
Akshay