#1 Le 24/05/2007, à 09:35
- jovial
[RESOLU] Convertir format URL en bash
Bonjour
Comment transformer en bash script ce format d'URL:
file:///media/JLUC-USB/ambiance/08-Hymn%202.mp3
Dans ce format:
/media/JLUC-USB/ambiance/08-Hymn 2.mp3
Et inversement ?
Pour l'instant je bricole avec sed mais je me dit qu'il doit bien y avoir une instruction dédiée.
Bye
Jean-Luc
Edit: la solution que j'ai retenu: http://forum.ubuntu-fr.org/viewtopic.ph … 33#p978033
Dernière modification par jovial (Le 08/06/2007, à 18:01)
Ubuntu 22.04: Dell Optiplex 7040, I7-6700 16Gio Ssd240, Radeon pro wx4100 & Dell Latitude E7270 i5-6300U 8Gio Ssd240
Hors ligne
#3 Le 24/05/2007, à 14:53
- marc31
Re : [RESOLU] Convertir format URL en bash
echo $var | sed "s/file:\\/\\///g" | sed "s/%20/ /g"
/media/JLUC-USB/ambiance/08-Hymn 2.mp3
avec perl ,php, python aussi ; si tu tombes sur d'autres caracteres que "%20", le script ne marchera plus.
en php, c'est la fonction url_decode() qui fait ce travail.
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne
#4 Le 24/05/2007, à 22:57
- jovial
Re : [RESOLU] Convertir format URL en bash
bonsoir
Ca m'étonne que l'on ne puisse pas le faire autrement que par sed
Sous Open office/basic on utilise ConvertFromURL et ConvertToURL
Si on a que sed où pourrai-je trouvé les la liste caractères spéciaux à convertir qui sont admis dans les chemins.
Donc pour Espace é è
| sed -e 's/file:\/\///'| sed -e 's/%20/ /g' | sed -e 's/%C3%A9/é/g'| sed -e 's/%C3%A8/è/g' |
bye
Ubuntu 22.04: Dell Optiplex 7040, I7-6700 16Gio Ssd240, Radeon pro wx4100 & Dell Latitude E7270 i5-6300U 8Gio Ssd240
Hors ligne
#5 Le 25/05/2007, à 10:21
- Alain.g
Re : [RESOLU] Convertir format URL en bash
Salut,
Pas besoin de t'embêter comme ça avec sed, tu peux le faire en utilisant Perl, Php, Python ou Ruby dans ton script bash.
Des exemples sont donnés ici : http://tokigun.net/blog/rss2.php
(je donne le lien rss car le blog est out et je n'ai pas trouvé de version en cache)
ruby :
echo $var | ruby -ruri -p -e '$_=URI.decode$_'
php :
echo $var | php -r 'echo urldecode(file_get_contents("php://stdin"));'
perl :
echo $var | perl -pe 's|%([0-9a-f]{2})|pack('C',hex($1))|segi;'
python :
echo $var | python -c 'import sys,urllib;sys.stdout.write(urllib.unquote(sys.stdin.read()))'
J'ai testé les quatre solutions avec
var=%C3%80%20la%20m%C3%AAme%20p%C3%A9riode
Devant donner : À la même période
Le résultat a été correct dans tous les cas .
Dernière modification par Alain.g (Le 28/10/2007, à 21:18)
Xubuntu Karmic !
Hors ligne
#6 Le 25/05/2007, à 12:16
- jovial
Re : [RESOLU] Convertir format URL en bash
Bonjour
Merci bien pour cette réponse Alain
j'ai essayé dans un script
#!/bin/bash
var="file:///%C3%80%20la%20m%C3%AAme%20p%C3%A9riode/%C3%AE%C3%AF%C3%B0%C3%B1%C3%B2%C3%B3%C3%B4%C3%B5%C3%B6%C3%B8%C3%B9%C3%BA%C3%BB%C3%BC%C3%BD%C3%BE%C3%BF.txt"
echo $var
echo -------
echo php: $var | php -r 'echo urldecode(file_get_contents("php://stdin"));'
echo perl: $var | perl -pe 's|%([0-9a-f]{2})|pack('C',hex($1))|segi;'| sed -e 's/file:\/\///'
echo python: $var | python -c 'import sys,urllib;sys.stdout.write(urllib.unquote(sys.stdin.read()))'| sed -e 's/file:\/\///'
echo "ruby: "$var | ruby -ruri -p -e '$_=URI.decode$_'| sed -e 's/file:\/\///'
# utilisation du résultat
echo $var | perl -pe 's|%([0-9a-f]{2})|pack('C',hex($1))|segi;'> /home/jovial/Desktop/decode_url.txt
# ???
var2=`$var | perl -pe 's|%([0-9a-f]{2})|pack('C',hex($1))|segi;'`
echo var2: $var2
# ???
echo $var | perl -pe 's|%([0-9a-f]{2})|pack('C',hex($1))|segi;'| sed -e 's/file:\/\///' |\
zenity --text-info --title="perl"
en php j'ai une erreur
pour le reste c'est ok
si je redirige le résultat vers un fichier txt c'est ok
par contre
pas d'echo sur $var2
si je redirige vers zenity c'est pas bon
Bye
Ubuntu 22.04: Dell Optiplex 7040, I7-6700 16Gio Ssd240, Radeon pro wx4100 & Dell Latitude E7270 i5-6300U 8Gio Ssd240
Hors ligne
#7 Le 25/05/2007, à 12:45
- Alain.g
Re : [RESOLU] Convertir format URL en bash
Pour PHP, si tu as php5 et php5-cli ça devrait aller
var2 : il faudrait ajouter un echo devant $var
var2=`echo $var | perl -pe 's|%([0-9a-f]{2})|pack('C',hex($1))|segi;'`
Zenity --text-info
En fait si tu essaies simplement « echo é | zenity --text-info », tu verras que Zenity affiche mal l'accent, donc c'est le même problème pour ton url et ce n'est lié à perl
Avec --notification il y a pas de problème :
echo message:$var | perl -pe 's|%([0-9a-f]{2})|pack('C',hex($1))|segi;'| sed -e 's/file:\/\///' |\
zenity --notification --listen
ni avec --text="$var2"
Dernière modification par Alain.g (Le 25/05/2007, à 13:14)
Xubuntu Karmic !
Hors ligne
#8 Le 25/05/2007, à 13:51
- Alain.g
Re : [RESOLU] Convertir format URL en bash
Pour le problème d'encodage avec zenity --text-info, il est toujours possible de convertir le texte juste avant qu'il n'arrive à zenity :
echo "À la même époque" | recode utf8..latin1 | zenity --text-info
Xubuntu Karmic !
Hors ligne
#9 Le 25/05/2007, à 23:38
- jovial
Re : [RESOLU] Convertir format URL en bash
Oui merci Alain pour les précisions
Pour le PHP je dirai simplement cela ne fonctionne pas avec Feisty mais par contre tu as largement répondu à ma question puisque le reste fonctionne.
Pour tranférer dans zenity j'ai déjà posté dans http://forum.ubuntu-fr.org/viewtopic.php?pid=918867
toto4455 a fourni une réponse qui fonctionne mais je me dis qu'il y peut être plus simple
echo "À la même époque" | recode utf8..latin1 | zenity --text-info
recode ne fonctionne pas dans Feisty natif, pour Utf8 j'ai pas encore saisi, ne serai t'il pas dans le bon format ou y aurai plutôt un problème avec zenity.
je suis à mes tout début de bash et je suis loin de tout saisir, il faut donc que j'étudie unpeu mieu la chose.
Entout cas pour ce post je mets résolu
Pour la tarte à la rubarbe ça doit être une question de recette, il doit falloir y ajouter quelque indredients qui vont stimuler les papilles.
Bye merci à tous
Jean-luc
Dernière modification par jovial (Le 25/05/2007, à 23:43)
Ubuntu 22.04: Dell Optiplex 7040, I7-6700 16Gio Ssd240, Radeon pro wx4100 & Dell Latitude E7270 i5-6300U 8Gio Ssd240
Hors ligne
#10 Le 26/05/2007, à 04:45
- Alain.g
Re : [RESOLU] Convertir format URL en bash
Je suis également sous Feisty, la solution PHP fonctionne pourtant bien, c'est juste que tu ne dois pas avoir ce qu'il faut d'installé.
En revanche, je ne comprends pas pourquoi la solution avec recode + zenity ne fonctionnerait pas chez toi (il me semble que recode est installé par défaut)
Rien ne s'affiche ou certains caractères s'affichent mal ??
Et sans recode c'était quoi le problème au juste ? un problème d'encodage (ça affiche été à la place de été) ou rien ne s'affichait ?
Dernière modification par Alain.g (Le 26/05/2007, à 09:46)
Xubuntu Karmic !
Hors ligne
#11 Le 26/05/2007, à 13:12
- jovial
Re : [RESOLU] Convertir format URL en bash
Je suis également sous Feisty, la solution PHP fonctionne pourtant bien, c'est juste que tu ne dois pas avoir ce qu'il faut d'installé.
En revanche, je ne comprends pas pourquoi la solution avec recode + zenity ne fonctionnerait pas chez toi (il me semble que recode est installé par défaut)
Rien ne s'affiche ou certains caractères s'affichent mal ??
Et sans recode c'était quoi le problème au juste ? un problème d'encodage (ça affiche été à la place de été) ou rien ne s'affichait ?
console -> recode me donne
The program 'recode' is currently not installed. You can install it by typing:
sudo apt-get install recode
J'ai pas vraiment pu identifier ce qui se passe mais parfois quand je transmets des données à zénity j'ai des symboles foirés:. dans mon exemple echo $var | perl -pe 's|%([0-9a-f]{2})|pack('C',hex($1))|segi;'| sed -e 's/file:\/\///' | zenity --text-info --title="perl"
me donne ( /à la même période/à®à¯à°à±à²à³à´àµà¶à¸à¹àºûà¼à½à¾à¿.txt)
alors que si je tranmets > texte.txt c'est ok
Je vais y regarder, je pense que je ferai un post
bye
Ubuntu 22.04: Dell Optiplex 7040, I7-6700 16Gio Ssd240, Radeon pro wx4100 & Dell Latitude E7270 i5-6300U 8Gio Ssd240
Hors ligne
#12 Le 26/05/2007, à 15:47
- Alain.g
Re : [RESOLU] Convertir format URL en bash
Bah si recode n'est pas installé c'est qu'il faut l'installer, sinon forcément ça ne fonctionnera pas
Recode empêchera justement ces "caractères foirés", comme tu dis, en changeant l'encodage du texte pour que ce convienne à zenity --text-info
Xubuntu Karmic !
Hors ligne
#13 Le 07/06/2007, à 23:50
- jovial
Re : [RESOLU] Convertir format URL en bash
Bonjour
J'ai besoin maintenant de faire le contraire:
Comment transformer
/media/JLUC-USB/ambiance/08-Hymn 2.mp3
Dans ce format:
/media/JLUC-USB/ambiance/08-Hymn%202.mp3
bye
Ubuntu 22.04: Dell Optiplex 7040, I7-6700 16Gio Ssd240, Radeon pro wx4100 & Dell Latitude E7270 i5-6300U 8Gio Ssd240
Hors ligne
#14 Le 07/06/2007, à 23:54
- jovial
Re : [RESOLU] Convertir format URL en bash
@Alain.g
Pour les caractère foirés cela se produit quand on envoie un résultat avec un pipeline, si on utilise un fichier on a plus le problème.
Ubuntu 22.04: Dell Optiplex 7040, I7-6700 16Gio Ssd240, Radeon pro wx4100 & Dell Latitude E7270 i5-6300U 8Gio Ssd240
Hors ligne
#15 Le 08/06/2007, à 07:37
- marc31
Re : [RESOLU] Convertir format URL en bash
J'ai besoin maintenant de faire le contraire:
Comment transformer
/media/JLUC-USB/ambiance/08-Hymn 2.mp3
Dans ce format:
/media/JLUC-USB/ambiance/08-Hymn%202.mp3
je ne pense pas que ce soit indispensable. Ca marche bien avec les navigateur Internet sans saisir %20, si ton soft utilise les meme bibliothèques (en interne) ca risque de passer.
ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org
Hors ligne
#16 Le 08/06/2007, à 11:29
- jovial
Re : [RESOLU] Convertir format URL en bash
J'ai besoin maintenant de faire le contraire: ...
je ne pense pas que ce soit indispensable. Ca marche bien avec les navigateur Internet sans saisir %20, si ton soft utilise les meme bibliothèques (en interne) ca risque de passer.
oui tu as raison d'ailleur dans mon cas il s'agissait d'un argument à passer à une instruction mais il me suffisait de mettre des ""
Mais par exemple si je veux remplacer / ajouter <location> /home/jovial/Musique/Camille/Le%20fil/03%20-%20Assise.mp3<\location> dans un fichier xml avec bash et que je dispose de /home/jovial/Musique/Camille/Le fil/03 - Assise.mp3
Il y a peut être des cas où cela s'avère necessaire. Donc si il ya une solution autant la mettre dans ce post cela peut servir à d'autre.
Merci encore Marc
Bye
Ubuntu 22.04: Dell Optiplex 7040, I7-6700 16Gio Ssd240, Radeon pro wx4100 & Dell Latitude E7270 i5-6300U 8Gio Ssd240
Hors ligne
#17 Le 29/05/2008, à 13:30
- Alain.g
Re : [RESOLU] Convertir format URL en bash
un an plus tard...
La solution en bash est simplement :
echo -e "${var//\%/\\x}"
Xubuntu Karmic !
Hors ligne
#18 Le 08/01/2009, à 18:52
- AnsuzPeorth
Re : [RESOLU] Convertir format URL en bash
un an plus tard...
La solution en bash est simplement :
echo -e "${var//\%/\\x}"
8 mois plus tard.....
Merci pour cette commande, mais j'ai un soucis qd meme. Lorsque je j'execute la commande dans le terminal, c'est ok, mais pas dans le code gtkdialog....(bash/gtkdialog)/ Avec sed, ca fonctionne !(mais pas essayer avec tout, juste %20)
ENTRY3="file:///home/yoanne/music_deezer/Musique/Patrice%20-%20No%20Excuse.mp3
"
#ok mais mplayer supprime lettre accentué, et ne fonctionne ps dans script
gmplayer "`echo -e "${ENTRY3//\%/\\x}" | sed "s#^file://##g;s#\r##g"`"
#ok, mais pas testé remplacer les accents
gmplayer "`echo $ENTRY3 | sed -e "s#^file://##g;s#%20# #g;s#\r##g"`"
j'ai pas testé recode, si bash le permet ! (mais si pas moyen....j'y viendrais)
edit:peut etre l'option -e de echo ? Le retour chariot n'est plus supprimmé !
edit2: recode avec la commande donnée plus haut ne fonctionne pas non plus! (faut dire que j'y connais queeue dalle avec les formats !)
echo "Max%20Rom%C3%A9o%20" | recode utf8..latin1
Max%20Rom%C3%A9o%20
Dernière modification par AnsuzPeorth (Le 08/01/2009, à 19:20)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#19 Le 18/08/2011, à 15:21
- samfr95
Re : [RESOLU] Convertir format URL en bash
Deux ans plus tard ! (qui dit mieux ?)
En tripatouillant, j'ai trouvé le moyen de refaire l'inverse, avec python :
echo $var | python -c 'import sys,urllib;sys.stdout.write(urllib.quote(sys.stdin.read()))'
Ça peut servir dans un script qui parse du XML, même si cela serait plus simple en python !
5 machines sous Ubuntu et une sous Debian !
Un portable Acer 7730G libéré (avec remboursement...)
Sous linux au quotidien depuis 2005 !
Hors ligne
#20 Le 19/12/2011, à 08:07
- BlueRabbit
Re : [RESOLU] Convertir format URL en bash
Bonjour,
Alain.g ,Vous l'avez trouver ou la syntaxe de cette command : echo -e "${var//\%/\\x}"
et pour celui qui sa .. pour file://
Varx="file:///%C3%80%20la%20m%C3%AAme%20p%C3%A9riode"
var="${Varx#"file://"}"
var="$(echo -e "${var//\%/\\x}")"
archlinux 64 Bits
Portable ASUS i5
Hors ligne
#21 Le 19/12/2011, à 16:52
- AnsuzPeorth
Re : [RESOLU] Convertir format URL en bash
Alain.g ,Vous l'avez trouver ou la syntaxe de cette command : echo -e "${var//\%/\\x}"
Alain.g ne risque pas de te repondre ... Ca fait des années qu'il ne vient plus sur ce forum ... Bien dommage d'ailleurs !
Sinon, c'est de la substitution bash simplement:
http://abs.traduc.org/abs-5.3-fr/ch09s02.html
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#22 Le 19/12/2011, à 16:57
- Bousky
Re : [RESOLU] Convertir format URL en bash
Ou, pour les plus courageux / fous / geeks (rayer les mentions inutiles) :
$ man bash
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#23 Le 19/12/2011, à 17:01
- AnsuzPeorth
Re : [RESOLU] Convertir format URL en bash
Ou, pour les plus courageux / fous / geeks (rayer les mentions inutiles) :
Tu as oublié masochiste
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#24 Le 19/12/2011, à 17:58
- Bousky
Re : [RESOLU] Convertir format URL en bash
Bof, il n'y a que 5375 lignes en 24x80…
Et j'ai du à peu près tout lire (en diagonale, hein : je suis bien atteint, mais quand même !)
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#25 Le 19/12/2011, à 21:13
- BlueRabbit
Re : [RESOLU] Convertir format URL en bash
Merci
je doit être masochiste.
Dernière modification par BlueRabbit (Le 19/12/2011, à 21:14)
archlinux 64 Bits
Portable ASUS i5
Hors ligne