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

Shell et commandes POSIX Discussion :

Enlever les guillemets d'une chaine de caractere


Sujet :

Shell et commandes POSIX

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut Enlever les guillemets d'une chaine de caractere
    Bonjour

    Dans un fichier .sh, $choice contient une chaine de caractere comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $choice=""1" "2" "3" "4""
    quelle est le meilleur moyen de rendre ?

  2. #2
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    aha=$(echo ""1" "2" "3"" | sed s/\"//g)
    echo $aha

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/$choice/ s/"\([0-9]\)"/\1/g' fichier

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ choice='"1" "2" "3"'
    $ echo $choice
    "1" "2" "3"
    $ echo $choice | tr -d '"'
    1 2 3

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,
    Citation Envoyé par jlliagre Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ choice='"1" "2" "3"'
    $ echo $choice
    "1" "2" "3"
    $ echo $choice | tr -d '"'
    1 2 3
    Si on va par là, une simple expansion suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ choice='"1" "2" "3" "4"'
    
    $ echo ${choice}
    "1" "2" "3" "4"
    
    $ echo ${choice//\"/}
    1 2 3 4
    Mais la demande initiale, si je l'ai bien comprise, fait état d'un fichier à modifier et non d'une variable directement à proprement dit...

    Ceci dit je peux me tromper et je m'en excuse si tel était le cas

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Si on va par là, une simple expansion suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo ${choice}
    "1" "2" "3" "4"
    $ echo ${choice//\"/}
    1 2 3 4
    Ce n'est pas portable. C'est supporté par ksh93 et bash mais pas par tous les shells POSIX.
    Mais la demande initiale, si je l'ai bien comprise, fait état d'un fichier à modifier et non d'une variable directement à proprement dit...
    La commande tr n'impose pas de travailler avec des variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo '"1" "2" "3"' > fichier
    $ cat fichier
    "1" "2" "3"
    $ tr -d '"' < fichier
    1 2 3
    Ceci dit je peux me tromper et je m'en excuse si tel était le cas
    Excuses acceptées

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Ce n'est pas portable. C'est supporté par ksh93 et bash mais pas par tous les shells POSIX.
    J'en conviens, mais comme ce n'est pas mentionné...

    La commande tr n'impose pas de travailler avec des variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo '"1" "2" "3"' > fichier
    $ cat fichier
    "1" "2" "3"
    $ tr -d '"' < fichier
    1 2 3
    A condition que le fichier ne contienne que ces guillemets là


    Excuses acceptées
    Je t'en remercie

  8. #8
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Oui, en fait, la question n'est pas très claire. Virtuadrack parle de fichier .sh mais montre une ligne qui ressemble plus à du shell interactif. Si c'est dans un script, il s'agit d'une affectation de variable erronée ($ en trop).
    Ton script sed répond à la question telle qu'elle est posée mais la ligne résultante va soit provoquer une erreur de syntaxe soit ne rien faire, suivant le shell.

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    C'est clair que ce n'est pas clair

    Attendons donc un éclaircissement du principal intéressé

  10. #10
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Il y a beaucoup de façons de répondre à la question en prenant l'un ou l'autre raccourcis.

    Quelque chose de générique donnerait quelque chose comme ceci :

    Fichier Script.awk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    BEGIN{
            FS="\"\"";
            OFS="\"";
    }
    {
                    for ( i=1 ; i< NF ; i++ )
                    {
                            gsub("\"","",$i);
                    }
                    print $0
    }
    Executé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    becket@wtf:~$ echo '$choice=""1" "2" "3" "4""' | awk -f Script.awk
    $choice="1 2 3 4"

Discussions similaires

  1. enlever les balises d'une chaine de caractere
    Par bracket dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/04/2009, 17h51
  2. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  3. Réponses: 13
    Dernier message: 03/10/2007, 11h25
  4. enlever les 0 devant une chaine
    Par linux dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/03/2006, 11h06
  5. enlever les '0' devant une chaine
    Par linux dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/03/2006, 19h12

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