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