Pb avec awk pour modifier une chaîne text

Résolu
jerem1985 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
jerem1985 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voici mon probleme j'ai un fichier texte, ce fichier text doit être incrémenter d'une variable. En me lisant je me rend compte que c'est pas claire alors voila ce que sa donne

mon fichier text :
define {
name srv-lin
members localhost
}

le but et d'avoir un script qui utilise awk pour ajouter un nom à la suite de localhost, ce nom est compris dans une variable appeler $name

apres le traitement par le scripte le fichier doit etre ainsi:
mon fichier text apres script

define {
name srv-lin
members localhost,machine1
}

merci d'avance

2 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Je te propose de faire ça avec "sed" plutôt qu'avec "awk" :
jp@MDK:~/tmpfs ssh$ cat fichier.txt
define {
name srv-lin
members localhost
}

jp@MDK:~/tmpfs ssh$ var="machine1"

jp@MDK:~/tmpfs ssh$ echo $var
machine1

jp@MDK:~/tmpfs ssh$ sed "/localhost/ s/$/,$var/" fichier.txt
define {
name srv-lin
members localhost,machine1
}

jp@MDK:~/tmpfs ssh$ sed -i.bak "/localhost/ s/$/,$var/" fichier.txt

jp@MDK:~/tmpfs ssh$ cat fichier.txt
define {
name srv-lin
members localhost,machine1
}

jp@MDK:~/tmpfs ssh$
;-))
0
jerem1985 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
merci pour ta reponse
effectivement avec sed sa marche, cependant pour le mettre dans un script je doit utiliser l'option -e
pour etre plus précis dans ce que j'essaye de faire je te montre mon script qui doit modifier le fichier.txt

mon script.sh
modif=`cat fichier.txt | grep $1 | cut -d " " -f18` #$1 et une variable envoyer dans le script par une page php et qui
corespond a localhost

modif2=machine1
#avec le sed l'ajoute ,$modif2 derriere 'members localhost' de mon fichier.txt
cependant je n'arrive pas à trouver la bonne syntaxe et le man de sed et archi long

encore merci
0
jerem1985 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
en fait j'ai trouver comment passer le sed dans mon script

sed -i fichier.txt -e "s/localhost/machine1" fichier.txt

maintenant si tu pouvait juste me dire comment je pourrais remplacer localhost et machine1 par des variable de mon script

merci en tous cas pour ton aide
0
jerem1985 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
bon ben j'ai trouver tous seul grace à ton tuto
http://www.commentcamarche.net/faq/sujet 9559 sed introduction a sed part ii

ma commande ressemble à

sed -i fichier.txt -e "s/'$modif'/'modif2'/" hostgroup

merci beaucoup pour ton aide jipicy
0