Bonjour;
Tout est dans l'intitulé.
Comment faire pour mettre entre guillemets chaques mots d'un fichier ?
Par exemple :
truc bidule machin
devient "truc" "bidule" "machin"
Merci de votre savoir et aide
Version imprimable
Bonjour;
Tout est dans l'intitulé.
Comment faire pour mettre entre guillemets chaques mots d'un fichier ?
Par exemple :
truc bidule machin
devient "truc" "bidule" "machin"
Merci de votre savoir et aide
Salut,
"sed" me paraît plus adapté pour ce genre de tâche...
;)Code:
1
2
3
4
5
6
7
8
9 $ echo -e "truc bidule machin\nchose toto tata" truc bidule machin chose toto tata $ echo -e "truc bidule machin\nchose toto tata" | sed 's/[^ ]*/"&"/g' "truc" "bidule" "machin" "chose" "toto" "tata" $
Waouh !! Le "&" est assez incroyable 8O
Mais le souci c'est qu'en fait, je n'ai pas des mots isolés truc puis bidule puis machin mais un string entier "truc bidule machin"....
Comment faire pour obtenir depuis "truc bidule machin" => "truc" "bidule" "machin" ?
Dans quel contexte tu récupères ce "string" ?
Les solutions doivent être multiples, y compris avec "awk", mais le tout est de connaître le contexte afin d'adapter au mieux la solution...
Je fais un "while read ligne do .... done < $FIC_ENTREE"
Eh bien, le string est la ligne lue depuis le FIC_ENTREE.
La "ligne-string" est définie comme celle là :
"truc bidule machin"
En fait il me faudrait du substring( ligne, qqchose, qqchose) avec un concat pour rajouter les guillemets sur chaque mot composant ma ligne.
OK. C'est bon. Voilà ce que je cherchais en fait...
Et pis c'est tout :mouarf:Code:
1
2
3
4
5
6
7 while read ligne do Premiermot=`echo $ligne | cut -d\ -f1`; Premiermot="\"${Premiermot}\""; ... ligne="${Premiermot} ${Deuxiememot} ... ${Derniermot}"; done < $FIC_ENTREE
Merci zipe31 :ccool:
J'ai rien pigé à ton truc :?
Ton script ne correspond en rien à ta demande initiale :(
On pourrait avoir un exemple concret d'un bout de ton fichier AVANT TRAITEMENT et APRÈS TRAITEMENT s'il te plaît, merci ;)
Arf!... Je suis dur à comprendre; ça tu ne me le fais pas dire ^^
En clair, j'avais un fichier d'extraction de données d'un bdd mySQL : FIC_ENTREE
Dans ce fichier je n'avais qu'une seule ligne (ce que je voulais! [un DISTINCT dans la requete mySQL executée]).
Au depart je pensais que cette ligne était composée de mots "détachés", mais ton echo ligne | sed ' ' ne me mettait que des guillemets en debut et fin de ligne...
D'ou le fait que je decoupe la ligne avec cut et que je rajoute des guillemets à chaque mot puis je les concatene tous pour obtenir une ligne avec tous les mots encadrés de guillemets.
Je suis plus clair ? :roll:
Oui et non :?
La syntaxe de sed donnée plus haut est sensée faire ce que tu veux. Par contre si elle ne le fait pas c'est qu'il y a anguille sous roche :(
D'où ma demande d'avoir un exemple concret et non des explications :roll:
Tu es sûr que tes mots sont bien séparés par un espace et non autre chose (j'entends par autre chose, tabulation, espaces répétés, caractères non-imprimables, etc.) ?
Mais bon si ton script suffit à ton bonheur, tu m'en vois ravi :P
Bah je ne sais pas tres bien comment MySQL ecrit dans son "tee" (spool)...
Peut etre que c'etait des tabulations... qui sait ?...
Encore merci beaucoup pour ton aide :ccool:
Mon script me convient parfaitement (clair net et precis :mouarf: )
Bonne fin de journée. Tcho:D