Bash sed débutant

Résolu
Bonjour,
J'essai de faire un petit scipt en bash et je pense avoir besoin de la commande sed.
Cela dit je la trouve un peu complexe pour mon niveau si peu avancé.

J'ai un fichier var.txt qui contient ceci

Nom:Toto
Prénom:Anon
Age:99


Et je voudrais extraire
Toto
Anon
99

Pouvez vous m'aider ?

4 réponses

  1. Pour être plus précis en fait je crées le fichier var.txt comme ceci

    #affectation d'une valeur à mes variables
    Toto = $1
    Anon = $2
    99 = $3
    
    #ecriture de ces variables dans var.txt
    echo "Nom   : $1" >> var.txt
    echo "Prénom  : $2" >> var.txt
    echo "Age  : $3" >> var.txt
    


    Je voudrais maintenant récuperer ces variables mais sans "Nom :" , "Prénom :" , "Age :" ?
    0
    1. Contributeur
      Les méthodes qui t'ont été données ne te conviennent pas ?
      0
    2. Je bosse dessus mais ce n'est pas évident :
      $ sed -n 's/.*://p' plop
      Toto
      Anon
      99
      

      Mon script ne connait pas ces valeurs Toto Anon 99 au moment ou je le lis...

      cut -d ':' -f2 var.txt 
      ou encore
      while read line ; do echo ${line##*:}; done < var.txt 
      

      Je n'arrive pas à isoler chaque ligne pour l'affecter à une variables.
      0
    3. en fait je voudrais récuperer $1 $2 $3 en sortie comme je les avais avant de les écrire dans var.txt (sous forme de tableau en ajoutant Nom, Prénom Age devant les valeurs enrégistrées)
      0
    4. avant j'utilisais sed comme ceci pour récupérer ma variable ligne à ligne
      $1=$(sed -n "1p" var)
      $2=$(sed -n "2p" var)
      $3=$(sed -n "3p" var)
      

      Mais c'est limité car je dois maintenant éliminé "Nom :" "Prénom: " et "Age :" de mes lignes
      0
    5. Contributeur
      $ cat plop
      Nom:Toto
      Prénom:Anon
      Age:99
      
      $ sed -n 's/.*://p' plop
      Toto
      Anon
      99
      
      $ awk -F':' '{ print $2 }' plop
      Toto
      Anon
      99
      
      $ cut -d ':' -f2 plop
      Toto
      Anon
      99
      
      $ while read line ; do echo ${line##*:}; done < plop
      Toto
      Anon
      99
      
      $
      0
  2. merci bien.
    il ne me reste plus qu'à décortiquer vos lignes avec les tutos sur le bash pour comprendre quelque chose ;-)
    l'essentiel étant que ça fonctionne.
    0
    1. Contributeur
      Salut,

      Ou encore :

      $ sed -n 's/.*://p' plop
      Toto
      Anon
      99
      
      $ awk -F':' '{ print $2 }' plop
      Toto
      Anon
      99

      ;-))
      0
      1. Modérateur
        Essayes ceci:
        cut -d ':' -f2 var.txt 
        ou encore
        while read line ; do echo ${line##*:}; done < var.txt 
        

        man cut
        Gates gave ^H sold you the windows.
        GNU gave us the whole house.(Alexandrin)
        0