Caractere bizarre dans un script AWK [Résolu] - Linux et OS Alternatifs
Marsh Posté le 07-10-2005 à 10:00:15
^M c'est le retour à la ligne MS-DOS (Et Windows)
Si tu veux convertir un fichier texte DOS vers Unix, fais:
perl -p -e 's/\r$//' < fichier > fichier.unix
(Ne PAS prendre le même nom genre < fichier > fichier, tu te retrouverais avec un fichier vide...)
Et fais un backup du fichier avant, dès fois que ma solution ne soit pas la bonne ou que le ^M soit voulu
Marsh Posté le 07-10-2005 à 10:03:08
Je vais tester ton idee ms ce qui me parait bizarre c est que ces symboles n existe pas sur le fichier csv ( qui vient de window ) ms apparaissent apres le traitement qui lui est sous linux ...
Marsh Posté le 07-10-2005 à 10:16:31
Ça dépend de l'éditeur utilisé... tu peux utiliser 'file' pour savoir si le fichier utilise des fins de ligne Unix ou DOS
Marsh Posté le 07-10-2005 à 10:36:57
Alors merci pour ta reponse.
La commande perl ne fonctionne pas :\ , par contre j ai resolue mon prob en utilisant scp pour transferer le fichier.
Et effectivement en ftp normale les fin de ligne sont en crlf et avec scp c est lf.
Marsh Posté le 07-10-2005 à 10:39:00
Hello,
Tu peux directement le faire dans ton script awk avec la commande gsub(regexp, replacement, target) comme ca ton script fonctionnera quelque soit la methode de transfert ;-)
ex : Supprime les retours chariot de fin de ligne. A placer avant tes traitements (entre les lignes 7 et 8)
gsub (/\r$/, "", $0)
Pour info: ces caractères existent bien dans le fichier Windows mais tu ne les vois pas car ils sont interprétés. Sous linux le caractère est simplement affiché.
Pour en avoir le coeur net, edit le fichier sous windows avec un editeur binaire tu trouveras ce caractère en fin de ligne sa valeur est 13 ou 0xD en hex.
A+
Marsh Posté le 07-10-2005 à 10:57:55
Un grand merci pour cette astuce qui fonctionne a merveille !
Marsh Posté le 07-10-2005 à 09:56:05
Bonjour,
J'ai fait un script qui extrait des valeurs d'un fichier au format csv pour les mettre dans un fichier sql.
Ca marche pas trop mal sauf qu a la fin dans ma derniere concatenation j ai des caracteres bizarres qui apparaissent : ^M
Le script
Le resultat c est apres la variable $bob j ai :
"FAUX", "FAUX^M" ); (avec vi) si je fais un more j ai :
" );", "", "", "2", "", "FAUX", "FAUX
J'ai aucune idee du pourquoi du comment
Merci a vous
Message édité par Le_Tolier le 07-10-2005 à 10:58:14
---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !