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

 


Dernière réponse
Sujet : [Résolu] Caractere bizarre dans un script AWK
Le_Tolier Un grand merci pour cette astuce qui fonctionne a merveille !  :jap:  :bounce:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Le_Tolier Un grand merci pour cette astuce qui fonctionne a merveille !  :jap:  :bounce:
m3z 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+
Le_Tolier 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.
deather2 Ça dépend de l'éditeur utilisé... tu peux utiliser 'file' pour savoir si le fichier utilise des fins de ligne Unix ou DOS
Le_Tolier 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 ...
deather2 ^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
Le_Tolier 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:


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)