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 -
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).
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
-
Salut,
#!/bin/bash Machines=machine1+machine2+machine3 liste=$(echo $Machines | sed 's/+/\n/g') echo "$liste"
-
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
-
- 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
-
-
Salut,
Bizarre en effet ;-\
Quelle version de "sed" ?
Quel shell ?
Sur un fichier Unix ?
-
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! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
voici le bout qui pose probleme:
#!/bin/bash Machines=machine1+machine2+machine3 liste=` echo $Machines | sed 's/+/\n/g'` echo $liste
-
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!!
-
j'ai vraiment besoin de mettre le résultat dans une variable!! je vois pas comment faire sans me retrouver dans le cas initial!!
-
Regarde la réponse de "lami20j", ou alors :
#!/bin/bash Machines=machine1+machine2+machine3 echo -e "${Machines//+/\n}" -
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
-
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
-
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
-
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 codeecho "$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!!!
-
-
si tu fais
$ set|grep liste
liste=$'machine1\nmachine2\nmachine3'
la variable contient bien ce que tu veux