stormbringer 0 Posté(e) le 5 juillet 2010 Partager Posté(e) le 5 juillet 2010 Bonjour les gens ! Ca fait longtemps que je n'ai pas embêté mon monde avec Linux. Donc me revoici à la charge. Comme résumé dans le titre, il s'agit de modifier, avec un script, la valeur d'un paramètre figurant dans un fichier. En plus riche, je souhaite faire rentrer des valeurs de paramètre, afin de créer un fichier de configuration qui, lui, sera passé en paramètre d'une fonction. Donc, j'ai un fichier contenant la variable définie selon: toto=10; Je souhaite la modifier, avec un peu de bash echo "valeur de toto?" read Val [...] à la suite de quoi j'aimerai modifier la valeur de toto. Soucis: sed serait intéressant si j'arrivais à faire ce que je souhaite avec. Par exemple, si je fais: echo "valeur de toto?" read Val sed -i.bak -e "s/toto=/&${Val}/g" toto.txt et que je rentre comme valeur 123, on obtient: toto=12310; ce qui n'est pas exactement ce que je souhaite. Si vous avez (en plus de comprendre) une idée du comment ce faire, merci d'avance ! Lien à poster
momo 18 Posté(e) le 5 juillet 2010 Partager Posté(e) le 5 juillet 2010 ben le regexp ne devrait pas être su genre s/(toto=).*/1$val/g ? ( jamais fait de sed donc la commande est tout sauf valide ) 1 Lien à poster
TeKa 8 Posté(e) le 5 juillet 2010 Partager Posté(e) le 5 juillet 2010 Je n'ai pas de bash sous la main pour vérifier, mais la syntaxe de momo, qui me semble bonne, indique dans tous les cas la marche à suivre. Il faut un motif délimité par () dans ta regexp, que tu réinjectera via 1 (et plus si affinités) dans ton motif final. Ton 'g' final dans la commande de sed est inutile (tu n'as logiquement qu'une occurrence de ta ligne dans le fichier de conf, ou alors tu fais bizarrement tes fichiers de conf). Ah aussi, ${Val} ne sert à rien dans ton cas, tu peux écrire directement $Val. Les accolades sont intéressantes lorsque tu veux faire des opérations Bash sur ta variable, ou que tu veux délimiter son nom par rapport des '_' l'encadrant. Itou, rajout un petit '^' en tête de ton motif, pour être sur de matcher la bonne ligne (ex: tu laisse en commentaires les précédentes valeurs de tes variables de configuration, bah si tu ne mets pas '^' et que tu laisse le 'g' en fin de substitution, tu vas péter tout ton historique). Et si je ne dis pas de connerie, le "-e" est inutile. Lien à poster
stormbringer 0 Posté(e) le 5 juillet 2010 Auteur Partager Posté(e) le 5 juillet 2010 Y'avait juste à rajouter un ; après le 1$Val de momo et ça fait exactement ce que je veux. Rien à dire, à part un grand merci, et un "putain, l'est trop fort!" Merci aussi à TeKa pour la phase "déchiffrage" et "bons réflexes à avoir" Lien à poster
momo 18 Posté(e) le 5 juillet 2010 Partager Posté(e) le 5 juillet 2010 http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/ Bon c'est vrai que j'en ai bouffé pour le project Euler, histoire de reformater les fichiers texte donnés vers un format plus acceptable pour lua. Lien à poster
Messages recommandés