Bonjour!
Est ce que quelqu'un saurait comment remplacer un "/" par un espace ?? J'ai par exemple: "toto/tata/popo/titi" et j'ai ensuite:"toto tata popo titi". Je suis sous Mandriva. Merci ^^
Version imprimable
Bonjour!
Est ce que quelqu'un saurait comment remplacer un "/" par un espace ?? J'ai par exemple: "toto/tata/popo/titi" et j'ai ensuite:"toto tata popo titi". Je suis sous Mandriva. Merci ^^
Dans quoi ?Citation:
Envoyé par solp
Cà fait ce que tu demandes, mais je ne suis pas sût que ce soit très utile ;)Code:echo "toto/titi/tata" | tr "/" " "
En fait, je souhaite prendre les données séparées par des "/" comme variables. J'ai fait ce que tu m'as dit, puis j'ai fait un read mais cela ne fonctionne pas !!?
Code:
1
2
3 echo "toto/titi/tata" | tr "/" " "; read nom1 nom2 nom3 echo " Voici mes trois amis: $nom1, $nom2, $nom3"
Une solution parmis d'autres:
Code:
1
2
3 echo "toto/titi/tata" | awk -F '/' '{ print "Voici mes tois amis: "$1 ", " $2 " et " $3 }
suivant ton shell tu peux faire
si ça ne marche pas, il faut récupérer chaque variable individuellement...Code:
1
2
3
4 $ echo "toto/titi/tata"|IFS=/ read nom1 nom2 nom3 $ echo " Voici mes trois amis: $nom1, $nom2, $nom3" Voici mes trois amis: toto, titi, tata
Justement, j'ai vu à plusieurs reprises, sur le net, que read gérait assez mal la redirection par les tubes et que un echo pipé ne fonctionnait généralement pas, qu'un cat de fichier pipé pouvait fonctionner sans garantie, mais qu'un < depuis un fichier était sans soucis.Citation:
Envoyé par laurentschneider
J'ai constaté par moi-même ce comportement, avec bash 3.00.16 : le code ci-dessus n'est pas fonctionnel, les trois variables restent à leurs valeurs antérieures.
Par contre, ce code fonctionne :Le passage par un fichier (fût-il temporaire, merci mktemp) est quand même un peu dommage :?Code:
1
2
3
4 $ echo "toto/titi/tata" > toto.txt ; IFS=/ read nom1 nom2 nom3 < toto.txt ; rm -f toto.txt $ echo " Voici mes trois amis: $nom1, $nom2, $nom3" Voici mes trois amis: toto, titi, tata
Si quelqu'un a une autre idée ...
Code:
1
2
3
4 $ eval $(echo "toto/titi/tata"|awk '{print "nom"NR"="$1}' RS=/) $ echo " Voici mes trois amis: $nom1, $nom2, $nom3" Voici mes trois amis: toto, titi, tata
Je savais que, comme PERL, le bash était du type TMTOWTDI mais là, bravo!:applo:
Merci pour les réponses ^^.