C'est bien ce que je dit...
'\r' est le caractère RETOUR CHARIOT. Généralement sous unix on utilise seulement \n pour signaler un retour à la ligne. Seulement sous certaines applications (généralement sous windows) il y a 2 caractères : \r ET \n. \r pour indiquer que le chariot retourne au début de la ligne et \n pour indiquer qu'on passe a la ligne suivante. Sous unix généralement on a seulement \n => on passe a la ligne suivante et on retourne au début de la ligne
Je veux dire par la que dans ton fichier pour signaler la fin de la ligne tu as \r \n à chaque fin de ligne. le read détecte le \n pour la fin de ligne et donc l'omet quand il le passe à ta variable mais \r est pour lui un caractère classique.
ton fichier est en fait
tutu\r\n
titi\r\n
...\r\n
toto\r\n
tu n'as qu'a faire un hexdump de ton fichier pour voir TOUS les caractères. à la place des \r\n tu auras 0x0D 0x0A à chaque fin de ligne
Table ASCII Retour à la ligne
La solution est d'enlever tous les \r qui ne servent à rien. Tu as plusieurs technique. Un coup de sed ou un coup de dos2unix
Message édité par o'gure le 12-09-2007 à 20:50:15
---------------
Relax. Take a deep breath !