Aide fonction sed sous linux (encore un )
Résolu/Fermé
A voir également:
- Aide fonction sed sous linux (encore un )
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Linux live usb creator - Télécharger - Outils Internet
5 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
9 sept. 2008 à 22:54
9 sept. 2008 à 22:54
Il faut entourer l'expression par des quotes doubles pour que la variable soit interprétée :
;-))
[tmpfs]$ cat fich tm_setting name_on_plugin_load "nom avant modification" tm_execsetting name_on_plugin_load "nom avant modification" tm_execsetting name_on_plugin_ "nom avant modification" [tmpfs]$ nom="nom que j'ai choisi" [tmpfs]$ echo $nom nom que j'ai choisi [tmpfs]$ sed "/tm_execsetting name_on_plugin_load/ s/nom avant modification/$nom/" fich tm_setting name_on_plugin_load "nom avant modification" tm_execsetting name_on_plugin_load "nom que j'ai choisi" tm_execsetting name_on_plugin_ "nom avant modification" [tmpfs]$Voir : http://www.commentcamarche.net/faq/sujet 9559 sed introduction a sed part ii#le remplacement de variables
;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
8 sept. 2008 à 22:31
8 sept. 2008 à 22:31
Salut,
[tmpfs]$ cat le_fich tm_setting name_on_plugin_load "nom avant modification" tm_execsetting name_on_plugin_load "nom avant modification" tm_execsetting name_on_plugin_ "nom avant modification" [tmpfs]$ sed 's/\(tm_execsetting name_on_plugin_load \).*/\1"nom que j ai choisi"/' le_fich tm_setting name_on_plugin_load "nom avant modification" tm_execsetting name_on_plugin_load "nom que j ai choisi" tm_execsetting name_on_plugin_ "nom avant modification"Si tu veux que le changement soit effectif, utilise l'option "-i" de sed, modification en place, et avec "-i.bak" tu obtiens même une sauvegarde du fichier original...
[tmpfs]$ cat le_fich tm_setting name_on_plugin_load "nom avant modification" tm_execsetting name_on_plugin_load "nom avant modification" tm_execsetting name_on_plugin_ "nom avant modification" [tmpfs]$ sed -i.bak 's/\(tm_execsetting name_on_plugin_load \).*/\1"nom que j ai choisi"/' le_fich [tmpfs]$ cat le_fich tm_setting name_on_plugin_load "nom avant modification" tm_execsetting name_on_plugin_load "nom que j ai choisi" tm_execsetting name_on_plugin_ "nom avant modification" [tmpfs]$Voir dans la FAQ les pages consacrées à SED ;-))
en fait l'expression (tm_execsetting name_on _plugin_load).* veut dire que je garde tout ce qui est en tre parenthese et que je le replace le reste * par le contenu de l'autre slash ??
g pas trop saisi pourquoi vous avze mis de /\ mais ça je vais reprends le tuto a fond pour bien saisir
jevais bosser et ce soir je met en palce ma fonction vous etes super :)
merci beaucoup
g pas trop saisi pourquoi vous avze mis de /\ mais ça je vais reprends le tuto a fond pour bien saisir
jevais bosser et ce soir je met en palce ma fonction vous etes super :)
merci beaucoup
désolé pour le double post mais il c'est ecoulé quelques heures
et
g encore un probleme
car le script que je veux creer change "nom avant modofication" par "nom que j'ai choisi" or nom que g choisi est une variable
ainsi je demare mon script comme ceci ./monscript "nom que j'ai choisi"
et au debut de mon script je declare ma variable avec :
[code]
#/bin/bash
nom=$1
sed -i.bak 's/\(tm_execsetting name_on_plugin_load \).*/\1\"$nom\"/' le_fich
[/code]
rhum@bureau$ ./monscript "nom que j'ai choisi"
rhum@bureau$ cat le_fich
tm_setting name_on_plugin_load "nom avant modification"
tm_execsetting name_on_plugin_load "$nom"
tm_execsetting name_on_plugin_ "nom avant modification"
et
g encore un probleme
car le script que je veux creer change "nom avant modofication" par "nom que j'ai choisi" or nom que g choisi est une variable
ainsi je demare mon script comme ceci ./monscript "nom que j'ai choisi"
et au debut de mon script je declare ma variable avec :
[code]
#/bin/bash
nom=$1
sed -i.bak 's/\(tm_execsetting name_on_plugin_load \).*/\1\"$nom\"/' le_fich
[/code]
rhum@bureau$ ./monscript "nom que j'ai choisi"
rhum@bureau$ cat le_fich
tm_setting name_on_plugin_load "nom avant modification"
tm_execsetting name_on_plugin_load "$nom"
tm_execsetting name_on_plugin_ "nom avant modification"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ça y es cette fois j'ai reussi
en plus en suivant le lien en bas de ton post g compris comment integrer la variable de maniere plus generale
je doit avouer que j'avais lu en diagonale et que g pas fais gaffe que yavais tout un paragraphe dedié a l'introduction de variable dans la commande (:honte)
par contre pour que ça fonctionne g utilisé la l'expression de ta reponse d'hier soir
\(tm_execsetting name_on_plugin_load \).*
enfin merci beaucoup vraiment la maintenant ça fonctionne nikel
en plus en suivant le lien en bas de ton post g compris comment integrer la variable de maniere plus generale
je doit avouer que j'avais lu en diagonale et que g pas fais gaffe que yavais tout un paragraphe dedié a l'introduction de variable dans la commande (:honte)
par contre pour que ça fonctionne g utilisé la l'expression de ta reponse d'hier soir
\(tm_execsetting name_on_plugin_load \).*
enfin merci beaucoup vraiment la maintenant ça fonctionne nikel