Pb avec awk pour modifier une chaîne text

Résolu/Fermé
jerem1985 Messages postés 65 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 19 novembre 2009 - 17 nov. 2008 à 10:30
jerem1985 Messages postés 65 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 19 novembre 2009 - 17 nov. 2008 à 14:00
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
A voir également:

2 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 896
17 nov. 2008 à 10:53
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 lundi 17 novembre 2008 Statut Membre Dernière intervention 19 novembre 2009 2
17 nov. 2008 à 13:11
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 lundi 17 novembre 2008 Statut Membre Dernière intervention 19 novembre 2009 2
17 nov. 2008 à 13:40
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 lundi 17 novembre 2008 Statut Membre Dernière intervention 19 novembre 2009 2
17 nov. 2008 à 14:00
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