séparer les champs d'un fichier *.txt par des " " (help) - Shell/Batch - Programmation
Marsh Posté le 23-05-2008 à 11:27:19
C'est des espaces ou des tabulations ? Les chaînes de caractère ne contiennent jamais d'espace ?
Marsh Posté le 23-05-2008 à 11:35:50
| Elmoricq a écrit : En quel langage ? Sous quel OS ? | 
 
 
Je suis sous Linux (Debian) 
 
| babasss a écrit : C'est des espaces ou des tabulations ? Les chaînes de caractère ne contiennent jamais d'espace ? | 
 
 
Tabulations, jamais d'espace entre les caractères, ce sont des @mac @ip date ... 
Marsh Posté le 23-05-2008 à 11:42:49
Je déplace le sujet dans shell/batch alors.
Personnellement j'écrirais ça en awk :
| awk '{ for(i=1; i <= NF; i++) { printf("\"%s\" ", $i); } printf("\n" ); }' tonfichier | 
Ou alors en PERL :
| perl -p -e 's/(\w+)/"$1"/g;' tonfichier | 
Doit y avoir moyen avec sed aussi, mais j'ai toujours autant de mal avec les regexp POSIX.
Marsh Posté le 23-05-2008 à 11:43:51
Tu veux un script ? Si oui, répétitivité du script ?
Marsh Posté le 23-05-2008 à 12:25:30
Merci Elmoricq, je vais essayer d'appliquer ça.  
 
C'est assez nouveau pour moi, mais je suis en stage, donc là pour apprendre.  
 
Thx
Marsh Posté le 23-05-2008 à 14:21:02
Alors, je n'arrive pas à appliquer le awk ... avec le perl j'obtiens un résultat, pas le bon mais c'est déjà un début ... 
 
mais petite rectification :  
 
c'est un fichier *.dat (je précise on ne sait jamais ...) 
 
les champs sont séparés par des tabulations, mais malheureusement pour les @mac je n'obtient pas "0:1:2:4:92:63" mais "0":"1":"2":"4":"92":"63" ...  
 
Une idée ?
Marsh Posté le 23-05-2008 à 14:34:58
J'ai réussi à applique le awk  
 
| awk '{ for(i=1; i <=NF; i++) { printf("\%s\" ", $i); } printf("\n" ); }' abc.dat | 
 
 
Par contre le résultat est le suivant :  
 
| \0:b:du:93:5c:b0" \169.224.8.63" \1186567540" | 
  
 
Si vous pouviez m'indiquer comment remplacer le "\" par une guillemet ...
Marsh Posté le 23-05-2008 à 14:41:21
Tu as mal recopié le awk, tout simplement.
Il s'agit d'échapper le caractère guillemet pour éviter qu'il ne soit directement interprété par awk. On écrit donc : \"
Marsh Posté le 23-05-2008 à 14:43:36
| Elmoricq a écrit : Tu as mal recopié le awk, tout simplement.   | 
 
 
En effet ![[:angelfire] [:angelfire]](https://forum-images.hardware.fr/images/perso/angelfire.gif) 
 
 
Merci   
 
Marsh Posté le 23-05-2008 à 10:57:23
Bonjour, j'ai un fichier *.txt avec un nombre important de données organisées comme ceci :
 
 
xxx zzz yyy
xxx zzz yyy
Je voudrais en une simple manip arriver à ceci pour importer sans difficulté ce ces données dans une table.
"xxx" "zzz" "yyy"
"xxx" "zzz" "yyy"