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 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

#2 Le 24/05/2007, à 14:04

krusaf

Re : [RESOLU] Convertir format URL en bash

pour le plus compliqué :

$ var="file:///media/JLUC-USB/ambiance/08-Hymn%202.mp3"

$ echo $var | sed "s/file:\\/\\///g" | sed "s/%20/ /g"
/media/JLUC-USB/ambiance/08-Hymn 2.mp3


A ma connaissance il n'y a pas d'autre moyen

Hors ligne

#3 Le 24/05/2007, à 14:53

marc31

Re : [RESOLU] Convertir format URL en bash

krusaf a écrit :

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

smile


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. wink

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 hmm (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

Alain.g a écrit :

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 hmm (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 wink

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

jovial a écrit :

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 smile

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... roll

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

Alain.g a écrit :

un an plus tard... roll

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 ! wink


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

Bousky a écrit :

Ou, pour les plus courageux / fous / geeks (rayer les mentions inutiles) :

Tu as oublié masochiste big_smile


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