Ajout de saut de ligne

wida Messages postés 170 Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'utilise cette commande pour avoir un saut de ligne à chaque fois que je rencontre un signe '+':

sed 's/+/\n/g'

Mais au lieu d'avoir un saut de ligne, j'ai un simple espace!! savez pourquoi? qu'est ce qui ne va pas avec cette commande?

Merci pour votre intervention :-)
--
Le rêve n'aboutit à rien, l'action à tout.
(J. FIAUX).
Configuration: Linux Fedora / Firefox 3.5.1

12 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    #!/bin/bash
    Machines=machine1+machine2+machine3
    liste=$(echo $Machines  | sed 's/+/\n/g')
    echo "$liste"
    
    1
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Je t''es pourtant dit quoi faire. Il faut utiliser les guillemets pour l'affichage.

    lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ cat plus.sh 
    #!/bin/bash
    Machines=machine1+machine2+machine3
    liste=$(echo $Machines  | sed 's/+/\n/g')
    liste2=`echo "$liste"`
    echo "$liste2"
    lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ sh plus.sh 
    machine1
    machine2
    machine3

    1
    1. wida Messages postés 170 Statut Membre 17
       
      justement c'est pas l'affichage qui m'interesse mais c'est le contenu de la variable..
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > wida Messages postés 170 Statut Membre
         
        L'affichage n'est que la forme représentative de l'interprétation !
        0
      2. wida Messages postés 170 Statut Membre 17 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        dans l'exemple précedent j'ai fait le echo juste pour vérifier le contenu de la variable liste2
        voila un autre exemple:

        allMachine=''
        for i in 1 4 7 10;
        do
        Machines=machine$i+machine$(i+1)+machine$(i+2)
        liste=$(echo $Machines | sed 's/+/\n/g')
        allMachine=$allMachine'  '$Machines
        done


        le but c'est d'avoir la liste de toutes les machine dans allMachine afin d'effectuer des taches sur ces machines. donc je n'ai vraiment rien à faire avec l'affichage c'était juste pour voir le contenu des variables
        0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Bizarre en effet ;-\

    Quelle version de "sed" ?
    Quel shell ?
    Sur un fichier Unix ?
    0
  4. wida Messages postés 170 Statut Membre 17
     
    en fait, je débute avec linux et je sais pas comment avoir toute ces informations!!
    je lance la commande depuis un script, par contre si je la lance directement depuis le shell ya aucun souci!
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Alors montres-nous ton script qu'on essaie de repérer ce qui ne va pas...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. wida Messages postés 170 Statut Membre 17
     
    voici le bout qui pose probleme:

    #!/bin/bash
    Machines=machine1+machine2+machine3
    liste=` echo $Machines  | sed 's/+/\n/g'`
    echo $liste
    0
  7. wida Messages postés 170 Statut Membre 17
     
    en fait je remarque une chose, si je fais ça:

    Machines=machine1+machine2+machine3
    echo $Machines  | sed 's/+/\n/g'

    ça marche bien mais l'autre façon de faire ne marche toujours pas!!
    0
  8. wida Messages postés 170 Statut Membre 17
     
    j'ai vraiment besoin de mettre le résultat dans une variable!! je vois pas comment faire sans me retrouver dans le cas initial!!
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Re,

      Regarde la réponse 6
      0
  9. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Regarde la réponse de "lami20j", ou alors :

    #!/bin/bash
    
    Machines=machine1+machine2+machine3
    echo -e "${Machines//+/\n}"
    
    0
  10. wida Messages postés 170 Statut Membre 17
     
    Merci ça marche bien, mais en fait y a toujours un souci quand j'utilise la variable liste! le saut de ligne je le veux dans la variable pas juste dans l'affichage
    exemple:
    #!/bin/bash
    Machines=machine1+machine2+machine3
    liste=$(echo $Machines  | sed 's/+/\n/g')
    liste2=`echo "$liste"`
    echo $liste2

    liste2 contient exactement la même valeur que liste
    0
  11. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Alors tu veux ça?
    lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ cat plus.sh 
    #!/bin/bash
    Machines=machine1+machine2+machine3
    liste=$(echo $Machines  | sed 's/+/\\n/g')
    liste2=$(echo $liste)
    echo $liste
    echo -e $liste
    lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ sh plus.sh 
    machine1\nmachine2\nmachine3
    machine1
    machine2
    machine3

    0
  12. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    donc je n'ai vraiment rien à faire avec l'affichage c'était juste pour voir le contenu des variables
    Du calme, d'accord?!
    On essaie de t'aider et pour pouvoir t'aider il faut d'abord comprendre ce que tu veux.
    Pour le moment je ne vois pas ce que tu veux donc je ne fais que tâtonner le terrain.

    Si tu veux voir le contenu de variable alors tu n'as qu'à faire comme ça, pas besoin de sed

    lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ cat plus.sh 
    #!/bin/bash
    Machines=machine1+machine2+machine3
    IFS='+'
    for m in $Machines
    do
      echo $m
    done
    lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ sh plus.sh 
    machine1
    machine2
    machine3
    
    0
    1. wida Messages postés 170 Statut Membre 17
       
      apprament je me suis mal expliquée!! Alors je reprend,
      la variable Machines contient ça:
      Machines=machine1+machine2+machine3

      je veux que la variable liste contienne ça:
      liste=
      machine1
      machine2
      machine3
      


      apres les commande que je fais je verfie si ma variable liste contient ce que je veux donc je fais ça:
      echo $liste

      ce code
      echo "$liste"

      ou celui là
      echo -e $liste

      donne un affichage parfait, mais ne change rien au niveau du contenu de ma varibale!! je sais pas si c'est plus claire maintenant!!!
      0
  13. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    si tu fais
    $ set|grep liste
    liste=$'machine1\nmachine2\nmachine3'
    la variable contient bien ce que tu veux
    0