Convertir des fichiers entre Linux et Windows

3086024827_8f0bd2195f

L'encodage des fichiers n'est pas forcément le même entre un fichier créé sous Windows et un fichier créé sous un environnement Linux.

Par exemple le caractère EOL (End Of Line) ne sera pas encodé de la même manière.

Cela signifie donc que des fichiers créés sous Windows ne seront pas exploitables sous Linux et vice-versa.

Plusieurs erreurs peuvent donc exister:

  1. Windows ne reconnaitra pas les End Of Line de Linux
  2. Linux ne reconnaitra pas correctement les fichiers enregistrés sous Windows car le caractère de fin de ligne sera reconnu comme étant Ctrl-M.

Pour rendre compatible les fichiers, plusieurs solutions s'offrent à nous.

Les commandes dos2unix et unix2dos

Deux utilitaires sont disponibles sous votre distribution Linux: dos2unix et unix2dos. Vous pouvez les installer via votre gestionnaire de packets.

Ainsi pour convertir la fin de ligne d'un document unix pour un document Windows, il faut faire:

cat -v input.txt
unix2dos input.txt output.txt
cat -v output.txt
output.txt

Pour rendre compatible un document Windows avec un document Linux, on utilisera:

cat -v input.txt
dos2unix input.txt output.txt
cat -v output.txt

La commande awk

Il est également possible d'utiliser la commande awk afin de convertir les fichiers.

Ainsi pour convertir un document Windows en document Linux, on utilisera:

cat -v input.txt
awk '{ sub("\r$", ""); print }' input.txt > output.txt
cat -v output.txt

Et pour convertir un document Linux en document Windows, on fera:

cat -v input.txt
$ awk 'sub("$", "\r")' input.txt > output.txt
$ cat -v output.txt

Petite astuce: la commande "cat" avec l'option -v permet de voir tous les caractères non imprimable (non printable characters), ce qui permettra d'afficher les caractères tels que ^ ou Ctrl-M.

Leave a Reply

Your email address will not be published. Required fields are marked *