Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/12/2007, à 00:32

Id2ndR

[Résolu] awt/sed : Manipuler des chaines de caractères en bash

Bonjour,

Je m'adresse ici à  ceux qui connaissent bien sed et/ou awt.

Je voudrais pouvoir transformer facilement la chaine suivante :
"InstallLocation"="E:\\Mon chemin - composé\\"
En ceci :
e:/Mon chemin - composé

Résumé des manipulations à  faire :
- Supprimer ce qui est avant le égal (inclus)
- Supprimer les guillemets
=> Ca je sais le faire avec la commande sed -e s/\"InstallLocation\"=//
- Changer la première majuscule en minuscule
- Changer \\ en /
=> Pour la majuscule, awt doit pouvoir le faire, mais je ne sais pas bien le manipuler
=> Le changement avec les slash est faisable avec sed, mais le résultat de l'exécution n'est pas le même si je renvoie le résultat à  l'écran avec la même commande ($ echo "$TEXTE" | sed -e "s/\\\\\\\\/\\\\/g") ou si j'évalue l'expression ($ VARIABLE=`echo "$TEXTE" | sed -e "s/\\\\\\\\/\\\\/g"`). Dans le dernier cas, ça ne marche pas.

J'aimerai donc votre aide pour les deux derniers points.
Merci

Dernière modification par Id2ndR (Le 02/12/2007, à 14:17)

Hors ligne

#2 Le 02/12/2007, à 02:53

frafa

Re : [Résolu] awt/sed : Manipuler des chaines de caractères en bash

lo
Bien compliqué mon truc smile , j\'suis pas un pro de sed doit y avoir beaucoup + simple
http://www.gnu.org/software/sed/manual/sed.html
http://sed.sourceforge.net/sed1line_fr.html

echo '"InstallLocation"="E:\\Mon chemin - composé\\"'  | sed '/.*\="/!d; s///;q' | sed '/\\\\/!d; s//\//;q' | sed '/\\\\/!d; s///;q'  | sed 's/\"//;q'  | sed 's/^./\l&/'

Dernière modification par frafa (Le 02/12/2007, à 02:53)

Hors ligne

#3 Le 02/12/2007, à 04:19

bertrand0

Re : [Résolu] awt/sed : Manipuler des chaines de caractères en bash

sed -n 's:\\\\:/:g ;s:"[^"]*"="\([^"]*[^"/]\)/\?":\L\1:p'

Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#4 Le 02/12/2007, à 05:51

Alain.g

Re : [Résolu] awt/sed : Manipuler des chaines de caractères en bash

Salut

Par rapport à  la solution donnée par bertrand0, il faudrait juste remplacer le \L par un \l  afin d'éviter que d'autres lettres ne soient mises en minuscule.


Xubuntu Karmic !

Hors ligne

#5 Le 02/12/2007, à 14:13

Id2ndR

Re : [Résolu] awt/sed : Manipuler des chaines de caractères en bash

J'ai trouvé la solution en m'inspirant de vos réponses :

$ echo '"InstallLocation"="E:\\Mon chemin - composé\\"'  | sed -n 's:\\\\:/:g ;s:"[^"]*"="\([^"]*[^"/]\)/\?":\1:p ; s:\(.\):\L\1:p'

Je n'ai pas utilisé \I au lieu de \L car ça ne marchait plus. Par contre, j'ai rajouté la dernière partire de l'expression.

Merci à tous !

Dernière modification par Id2ndR (Le 02/12/2007, à 14:47)

Hors ligne

#6 Le 02/12/2007, à 15:15

Id2ndR

Re : [Résolu] awt/sed : Manipuler des chaines de caractères en bash

Pour l'utilisation à  l'intérieur d'une expression évaluée (entre "`"), j'ai juste doublé les 4 slash.

Hors ligne

#7 Le 02/12/2007, à 18:07

Alain.g

Re : [Résolu] awt/sed : Manipuler des chaines de caractères en bash

Id2ndR a écrit :

Je n'ai pas utilisé \I au lieu de \L car ça ne marchait plus.

Je ne parlais pas d'un i majuscule, mais d'un l (L) minuscule.


Xubuntu Karmic !

Hors ligne

#8 Le 03/12/2007, à 20:58

Id2ndR

Re : [Résolu] awt/sed : Manipuler des chaines de caractères en bash

Ok Alain.g. Autant pour moi. Ta solution fonctionne parfaitement smile.

Hors ligne