#1 Le 19/02/2010, à 22:13
- AsTeR
[Résolu] Sed pour modifier des fichiers de config
Bonjour à vous,
J'aimerais me faire un petit script pour faciliter le déploiement d'une application. L'idée ce serait après en avoir récupèré le contenu de modifier des fichiers de config pour la configurer comme il se doit.
J'aimerais être capable de chercher une ligne matchant une expression régulière et la précéder d'un commentaire '//' dans mon cas et chercher une ligne juste par un préfixe et la remplacer par une autre. J'ai du mal à trouver comment dire à sed que je veux m'arrêter à la ligne et ne pas aller plus loin.
Merci d'avance
AsTeR
Dernière modification par AsTeR (Le 21/02/2010, à 19:43)
Hors ligne
#2 Le 19/02/2010, à 23:57
- nesthib
Re : [Résolu] Sed pour modifier des fichiers de config
ceci fait-il l'affaire ?
sed '0,/pattern/{/pattern/s#.*#//&#}' fichier
ajoute l'option -i à sed pour faire la modification dans le fichier
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 21/02/2010, à 19:42
- AsTeR
Re : [Résolu] Sed pour modifier des fichiers de config
Merci ça m'a bien aidé, je trouve que sed est franchement incompréhensible.
Pour aide à ceux qui viendront, voici une commande pour remplacer une ligne concernant un paramètre params.user en lui donnant la valeur "toto" dans un fichier de config ini. Attention la valeur est directement modifiée dans le fichier.
sed -i 's/^params\.user.*$/params.user = "toto"/' monfichier.ini
Hors ligne
#4 Le 21/02/2010, à 20:28
- nesthib
Re : [Résolu] Sed pour modifier des fichiers de config
meuh non c'est tout facile :
sed '0,/pattern/{/pattern/s#.*#//&#}' fichier
sed → bon c'est la commande
'…' → les commandes interprétées pas sed
0,/pattern/ → on travaille sur les lignes comprises entre le début et celle contenant le premier "pattern"
{} → sur les lignes précédentes on exécute les commandes entre {}
/pattern/ → on travaille sur les lignes contenant pattern (ici une seule étant donné la sélection prédédente)
/s#.*#//&# → sur ces lignes on substitue (s) le motif "la plus grande suite de n'importe quels caractères" (.*) (toute la ligne quoi) par lui même (&) précédé de //
voilà
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#5 Le 22/02/2010, à 23:10
- AsTeR
Re : [Résolu] Sed pour modifier des fichiers de config
Je comprend mieux en tout cas Ca ne ressemble pas à la structure "typique" de ce que j'avais trouvé via notre ami Google.
Hors ligne