IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Scripting pour remplacer un caractère par un autre


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 43
    Points : 29
    Points
    29
    Par défaut Scripting pour remplacer un caractère par un autre
    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 ^^

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par solp
    Est ce que quelqu'un saurait comment remplacer un "/" par un espace ?? Je suis sous Mandriva. Merci ^^
    Dans quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "toto/titi/tata" | tr "/" " "
    Cà fait ce que tu demandes, mais je ne suis pas sût que ce soit très utile

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "toto/titi/tata" | tr "/" " "; read nom1 nom2 nom3
    echo " Voici mes trois amis: $nom1, $nom2, $nom3"

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Une solution parmis d'autres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "toto/titi/tata" |  awk -F '/' '{
        print "Voici mes tois amis: "$1 ", " $2 " et " $3
    }

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    suivant ton shell tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    si ça ne marche pas, il faut récupérer chaque variable individuellement...

  6. #6
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par laurentschneider
    suivant ton shell tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    si ça ne marche pas, il faut récupérer chaque variable individuellement...
    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.

    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Le passage par un fichier (fût-il temporaire, merci mktemp) est quand même un peu dommage

    Si quelqu'un a une autre idée ...

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Je savais que, comme PERL, le bash était du type TMTOWTDI mais là, bravo!

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    Merci pour les réponses ^^.

Discussions similaires

  1. Script pour remplacer une chaine de caractères par une autre
    Par babiêtiguiya dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 28/02/2012, 14h57
  2. script pour remplacer des caractères par des blancs
    Par floctc dans le forum Langage
    Réponses: 5
    Dernier message: 03/06/2009, 16h44
  3. [POO] script pour remplacer un fichier image par un fichier flash
    Par tomguiss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/12/2008, 13h03
  4. Fonction pour remplacer des motifs de mots par d'autre
    Par keketteboy dans le forum VBA Word
    Réponses: 2
    Dernier message: 22/08/2008, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo