Pb avec awk pour modifier une chaîne text

Résolu
jerem1985 Messages postés 68 Statut Membre -  
jerem1985 Messages postés 68 Statut Membre -
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

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. jerem1985 Messages postés 68 Statut Membre 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
    2. jerem1985 Messages postés 68 Statut Membre 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