Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1721 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  [Résolu] Caractere bizarre dans un script AWK

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Caractere bizarre dans un script AWK

n°738297
Le_Tolier
Hello IT ?
Posté le 07-10-2005 à 09:56:05  profilanswer
 

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  

Code :
  1. commande=`echo $ligne |  awk -v table=$table '
  2. BEGIN {
  3. FS="%"
  4. chaine="INSERT INTO " table " VALUES ("
  5. }
  6. {
  7.         chaine=chaine"\""$1"\""
  8.         for ( i=2 ; i < NF-1 ; i++ ) {
  9.                 chaine=chaine", \""$i"\""
  10.         }
  11.         #chaine=chaine"\""$NF"\""
  12.         chaine=chaine", \"" $bob "\" );"//ici le prob je pense
  13. }
  14. END {
  15. print chaine
  16. }
  17. ' `
  18. echo $commande;
  19. echo "";
  20. done;


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  :fou:  
Merci a vous  :jap:


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 !
mood
Publicité
Posté le 07-10-2005 à 09:56:05  profilanswer
 

n°738302
deather2
Posté le 07-10-2005 à 10:00:15  profilanswer
 

^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

n°738306
Le_Tolier
Hello IT ?
Posté le 07-10-2005 à 10:03:08  profilanswer
 

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 ...


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°738314
deather2
Posté le 07-10-2005 à 10:16:31  profilanswer
 

Ça dépend de l'éditeur utilisé... tu peux utiliser 'file' pour savoir si le fichier utilise des fins de ligne Unix ou DOS

n°738323
Le_Tolier
Hello IT ?
Posté le 07-10-2005 à 10:36:57  profilanswer
 

Alors merci pour ta reponse.  :jap:  
 
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.


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°738326
m3z
il faut toujours faire simple
Posté le 07-10-2005 à 10:39:00  profilanswer
 

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+


Message édité par m3z le 07-10-2005 à 10:43:08
n°738337
Le_Tolier
Hello IT ?
Posté le 07-10-2005 à 10:57:55  profilanswer
 

Un grand merci pour cette astuce qui fonctionne a merveille !  :jap:  :bounce:


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  [Résolu] Caractere bizarre dans un script AWK

 

Sujets relatifs
[RESOLU] Problème d'installation Debian Sarge[Squid] Ne démarre pas, "Failed to open swap log" [résolu]
Questions sur QTparted [RESOLU][Résolu][Gentoo] Kernel panic
[resolu] linux sur un raid scsi, /boot et mbr sur un ideScript pour mis à jour de données
Utilisation de crontab pour planifier un script phpproblème d'execution de script
[Résolu][FC4] Xorg problème de résolution d'écran.[résolu] pb avec appareil photo numérique hp
Plus de sujets relatifs à : [Résolu] Caractere bizarre dans un script AWK


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR