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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
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 ?![]()
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
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![]()
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
Mon script me convient parfaitement (clair net et precis)
Bonne fin de journée. Tcho![]()
Partager