Bonjour,
Je cherche à modifier une ligne d'un fichier de configuration.
Je sais écrire à l'intérieur à la fin du fichier avec echo, mais comment aller à l'endroit désiré d'un seul coup ?
En gros dé-commenter une ligne pour la modifier.
merci
Bonjour,
Je cherche à modifier une ligne d'un fichier de configuration.
Je sais écrire à l'intérieur à la fin du fichier avec echo, mais comment aller à l'endroit désiré d'un seul coup ?
En gros dé-commenter une ligne pour la modifier.
merci
Bonjour
Imaginons que ta ligne soit la seule à contenir l'expression "Configuration perso":
Si le résultat te plaît, exécute la même commande avec l'option -i pour modifier le fichier d'origine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed '/Configuration perso/s/\([ \t]*\)#/\1/' fichier.cfg
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Bonjour,
Merci de ta réponse.
J'ai essayé ceci :
M'ai j'ai droit à un message d'erreur dans mon Shell :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 s='/' d='#' oldvar="${d}server = http:${s}${s}server.domain.com${s}myAppli${s}plugins${s}MyPlugin${s}" var="server = http:${s}${s}xx.xxx.xx.xxx${s}plugins${s}MyPlugin${s}" echo /etc/MyPlugin/serverconf.cfg | sed -r -i 's/$oldvar/$var/'Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed: no input files
Bien sûr. Tu demandes de modifier le fichier mais il n'y a pas de fichier. Je te dirais bien d'enlever l'option -i mais il me semble que plusieurs choses sont bizarres:
- echo affiche un message. Si tu veux afficher le contenu d'un fichier utilise cat.
Si tu laisses comme ici, il va écrire brutalement "/etc/MyPlugin/serverconf.cfg" et ne va pas trouver ta chaîne à modifier- Faire un cat pour le donner à sed est inutile. Donne directement le fichier de configuration à sed comme je l'ai fait.
- Du coup, si tu fais ça, tu peux garder l'option -i
- Autant pour les séparateurs dans les noms de fichiers, je peux comprendre qu'on les mette dans une variable car ce n'est pas les mêmes pour windows \ et Linux /. Mais pour les URL, je ne vois pas l'intérêt.
- Tu veux utiliser des variables mais tu protèges par des simple quotes ' ' qui empêchent l'interprétation de variables. Au minimum, des double quotes " " seraient préférables.
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
je ne comprends pas bien cette commande ...
J'ai essayé ça sinon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 oldvar="#server = http://server.domain.com/myappli/plugin/myplugin/" var="server = http://xx.xxx.xx.xxx/myplugin/" sed -i 's/$oldvar/$var/' /etc/myplugin/myserverconf.cfg
Mais ce coup-ci rien ne se passe...
Ben oui. Il faut prendre le temps de lire et comprendre les réponses qu'on se casse le ****** à écrire.
Ma 5ème remarque disait on-ne-peut-plus clairement que dans des simple quotes, les variables ne sont pas interprétées. $var et $oldvar ne seront jamais remplacées.
Donc soit tu mets des doubles quotes, soit tu sors des simples quotes pour rentrer dedans après la variable.
En tenant compte du fait que la bonne pratique demande de mettre ta variable, de toute façon, entre double quotes, pour ne pas en perdre un bout.
Et je rajoute une 6ème remarque:
Utilise s@ @ @ plutôt que s/ / /
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Entre temps et avant ta dernière réponse, j'ai réussi à exécuter la commande sed.
J'ai utilisé ta 6ème remarque en ajoutant des virgules comme séparateur pour ma commande sed.
Du coup, comme mon URL était courte, j'ai supprimé mes variables pour exécuter mon script.
Néanmoins, je vais quand même faire le test avec les variables pour maîtriser cet exemple.
merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager