Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 22h01   #1
Membre du Club
 
Inscription : août 2004
Messages : 201
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 201
Points : 47
Points : 47
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 :
$choice=""1" "2" "3" "4""
quelle est le meilleur moyen de rendre ?
virtuadrack est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/08/2011, 22h29   #2
Membre du Club
 
Inscription : août 2004
Messages : 201
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 201
Points : 47
Points : 47
Code :
1
2
aha=$(echo ""1" "2" "3"" | sed s/\"//g)
echo $aha
virtuadrack est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/08/2011, 08h16   #3
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
sed '/$choice/ s/"\([0-9]\)"/\1/g' fichier
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/08/2011, 22h31   #4
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 966
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 966
Points : 1 369
Points : 1 369
Code :
1
2
3
4
5
$ choice='"1" "2" "3"'
$ echo $choice
"1" "2" "3"
$ echo $choice | tr -d '"'
1 2 3
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 07h56   #5
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,
Citation:
Envoyé par jlliagre Voir le message
Code :
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 :
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
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 11h08   #6
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 966
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 966
Points : 1 369
Points : 1 369
Citation:
Envoyé par zipe31 Voir le message
Si on va par là, une simple expansion suffit :
Code :
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.
Citation:
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 :
1
2
3
4
5
$ echo '"1" "2" "3"' > fichier
$ cat fichier
"1" "2" "3"
$ tr -d '"' < fichier
1 2 3
Citation:
Ceci dit je peux me tromper et je m'en excuse si tel était le cas
Excuses acceptées
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 11h22   #7
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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é...

Citation:
La commande tr n'impose pas de travailler avec des variables:
Code :
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à


Citation:
Excuses acceptées
Je t'en remercie
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 11h45   #8
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 966
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 966
Points : 1 369
Points : 1 369
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.
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 11h52   #9
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
C'est clair que ce n'est pas clair

Attendons donc un éclaircissement du principal intéressé
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 23h03   #10
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
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 :
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 :
1
2
3
becket@wtf:~$ echo '$choice=""1" "2" "3" "4""' | awk -f Script.awk
$choice="1 2 3 4"
becket est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h51.


 
 
 
 
Partenaires

Hébergement Web