Remplacement %20 d'url en espaces avec sed
Résolu/Fermé
frederikk
Messages postés
15
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
9 avril 2008
-
6 avril 2008 à 20:02
frederikk Messages postés 15 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 9 avril 2008 - 9 avril 2008 à 22:30
frederikk Messages postés 15 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 9 avril 2008 - 9 avril 2008 à 22:30
A voir également:
- Remplacement %20 d'url en espaces avec sed
- Lien url - Guide
- Url blacklist - Forum Virus
- Url masquée pour votre sécurité - Forum TV & Vidéo
- Verifier url - Guide
- Comment cacher ou masquer une URL - Forum Programmation
8 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
6 avril 2008 à 20:08
6 avril 2008 à 20:08
Salut,
Affiche ton script, sans quoi on ne pourra t'aider ;-)
Affiche ton script, sans quoi on ne pourra t'aider ;-)
frederikk
Messages postés
15
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
9 avril 2008
6 avril 2008 à 20:19
6 avril 2008 à 20:19
Voici le script avec mon essai vers les _ avant... pour me montrer que ca fonctionne bien.
#!/bin/sh
#
QUERY_STRING=`cat url2 | grep champ1`
ST1=`echo $QUERY_STRING | sed -e 's/%20/_/g`
ST2=`echo $ST1 | sed -e 's/_/ /g`
N1=`echo $ST1 | sed 's/\&$//'`
N2=`echo $QUERY_STRING | sed -e 's/%20/ /g' | awk -F'champ[12]=' '{print $3}'`
echo $QUERY_STRING ; echo $ST1 ; echo $ST2 ; echo $N1 ; echo $N2 ; exit
Voici le résultat :
/tmp # ./test.sh
champ1=g%20%20C&champ2=PL5
champ1=g__C&champ2=PL5
champ1=g C&champ2=PL5
champ1=g__C&champ2=PL5
PL5
#!/bin/sh
#
QUERY_STRING=`cat url2 | grep champ1`
ST1=`echo $QUERY_STRING | sed -e 's/%20/_/g`
ST2=`echo $ST1 | sed -e 's/_/ /g`
N1=`echo $ST1 | sed 's/\&$//'`
N2=`echo $QUERY_STRING | sed -e 's/%20/ /g' | awk -F'champ[12]=' '{print $3}'`
echo $QUERY_STRING ; echo $ST1 ; echo $ST2 ; echo $N1 ; echo $N2 ; exit
Voici le résultat :
/tmp # ./test.sh
champ1=g%20%20C&champ2=PL5
champ1=g__C&champ2=PL5
champ1=g C&champ2=PL5
champ1=g__C&champ2=PL5
PL5
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
6 avril 2008 à 20:28
6 avril 2008 à 20:28
Il manque les quotes simples fermantes sur tes variables "ST1" et "ST2" ;-\
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
6 avril 2008 à 20:24
6 avril 2008 à 20:24
Affiche-le quand même...
Rajoute "set -xv" après le "shebang" et affiche le résultat de l'exécution de ton script s'il te plaît, merci.
Rajoute "set -xv" après le "shebang" et affiche le résultat de l'exécution de ton script s'il te plaît, merci.
frederikk
Messages postés
15
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
9 avril 2008
6 avril 2008 à 20:36
6 avril 2008 à 20:36
Rebonsoir,
voici le lancement du script en debug.
/tmp # sh -xv ./test.sh
#!/bin/sh
#
QUERY_STRING=`cat url2 | grep champ1`
+ cat url2
+ grep champ1
+ QUERY_STRING=champ1=g%20%20C&champ2=PL5
ST1=`echo $QUERY_STRING | sed -e 's/%20/_/g`
+ echo champ1=g%20%20C&champ2=PL5
+ sed -e s/%20/_/g
+ ST1=champ1=g__C&champ2=PL5
ST2=`echo $ST1 | sed -e 's/_/ /g`
+ echo champ1=g__C&champ2=PL5
+ sed -e s/_/ /g
+ ST2=champ1=g C&champ2=PL5
N1=`echo $ST1 | sed 's/\&$//'`
+ echo champ1=g__C&champ2=PL5
+ sed s/\&$//
+ N1=champ1=g__C&champ2=PL5
N2=`echo $QUERY_STRING | sed -e 's/%20/ /g' | awk -F'champ[12]=' '{print $3}'`
+ sed -e s/%20/ /g
+ awk -Fchamp[12]= {print $3}
+ echo champ1=g%20%20C&champ2=PL5
+ N2=PL5
echo $QUERY_STRING ; echo $ST1 ; echo $ST2 ; echo $N1 ; echo $N2 ; exit
+ echo champ1=g%20%20C&champ2=PL5
champ1=g%20%20C&champ2=PL5
+ echo champ1=g__C&champ2=PL5
champ1=g__C&champ2=PL5
+ echo champ1=g C&champ2=PL5
champ1=g C&champ2=PL5
+ echo champ1=g__C&champ2=PL5
champ1=g__C&champ2=PL5
+ echo PL5
PL5
+ exit
Honnêtement... je comprends vraiment pas pourquoi cette reaction !!!
Pour info, même boite, meme shell, et si je lance à la main la commande sed, le resultat a bien 2 espaces à l'arrivée !!!
voici le lancement du script en debug.
/tmp # sh -xv ./test.sh
#!/bin/sh
#
QUERY_STRING=`cat url2 | grep champ1`
+ cat url2
+ grep champ1
+ QUERY_STRING=champ1=g%20%20C&champ2=PL5
ST1=`echo $QUERY_STRING | sed -e 's/%20/_/g`
+ echo champ1=g%20%20C&champ2=PL5
+ sed -e s/%20/_/g
+ ST1=champ1=g__C&champ2=PL5
ST2=`echo $ST1 | sed -e 's/_/ /g`
+ echo champ1=g__C&champ2=PL5
+ sed -e s/_/ /g
+ ST2=champ1=g C&champ2=PL5
N1=`echo $ST1 | sed 's/\&$//'`
+ echo champ1=g__C&champ2=PL5
+ sed s/\&$//
+ N1=champ1=g__C&champ2=PL5
N2=`echo $QUERY_STRING | sed -e 's/%20/ /g' | awk -F'champ[12]=' '{print $3}'`
+ sed -e s/%20/ /g
+ awk -Fchamp[12]= {print $3}
+ echo champ1=g%20%20C&champ2=PL5
+ N2=PL5
echo $QUERY_STRING ; echo $ST1 ; echo $ST2 ; echo $N1 ; echo $N2 ; exit
+ echo champ1=g%20%20C&champ2=PL5
champ1=g%20%20C&champ2=PL5
+ echo champ1=g__C&champ2=PL5
champ1=g__C&champ2=PL5
+ echo champ1=g C&champ2=PL5
champ1=g C&champ2=PL5
+ echo champ1=g__C&champ2=PL5
champ1=g__C&champ2=PL5
+ echo PL5
PL5
+ exit
Honnêtement... je comprends vraiment pas pourquoi cette reaction !!!
Pour info, même boite, meme shell, et si je lance à la main la commande sed, le resultat a bien 2 espaces à l'arrivée !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
6 avril 2008 à 20:45
6 avril 2008 à 20:45
Salut,
Il manque les quotes simples fermantes sur tes variables "ST1" et "ST2" ;-\
comme qui c'est bien d'utiliser $() au lieu des apostrophes simples
voici un exemple
Il manque les quotes simples fermantes sur tes variables "ST1" et "ST2" ;-\
comme qui c'est bien d'utiliser $() au lieu des apostrophes simples
voici un exemple
lami20j@debian:~$ cat url.sh #!/bin/sh # QUERY_STRING="champ1=g%20%20C&champ2=P" ST1=$(echo $QUERY_STRING | sed -e 's/\%20/_/g') ST2=$(echo $ST1 | sed -e 's/_/ /g') N1=$(echo $ST1 | sed 's/\&$//') N2=$(echo $QUERY_STRING | sed -e 's/%20/ /g' | awk -F'champ[12]=' '{print $3}') echo $QUERY_STRING ; echo $ST1 ; echo $ST2 ; echo $N1 ; echo $N2 ; exit lami20j@debian:~$ sh url.sh champ1=g%20%20C&champ2=P champ1=g__C&champ2=P champ1=g C&champ2=P champ1=g__C&champ2=P P lami20j@debian:~$tu n'as qu'à modifier QUERY_STRING pour tester
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
6 avril 2008 à 20:48
6 avril 2008 à 20:48
Il faut quoter tes variables :
#!/bin/sh # QUERY_STRING=`cat url2 | grep champ1` ST1=`echo "$QUERY_STRING" | sed -e 's/%20/_/g` ST2=`echo "$ST1" | sed -e 's/_/ /g` N1=`echo "$ST1" | sed 's/\&$//'` N2=`echo "$QUERY_STRING" | sed -e 's/%20/ /g' | awk -F'champ[12]=' '{print $3}'` echo "$QUERY_STRING" ; echo "$ST1" ; echo "$ST2" ; echo "$N1" ; echo "$N2" ; exit;-))
frederikk
Messages postés
15
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
9 avril 2008
6 avril 2008 à 22:48
6 avril 2008 à 22:48
Merci messieurs !!!
Bon alors concernant les `fermant le sed.. effectivemment ca vient du fait que j'ai fait tellement de changements/ tests... elles sont passées à la trappe..
Mais c'est effectivemment les "" sur les echo qui manquaient. Merci jipicy.
Apparemment c'est ok dans mon script original, beaucoup plus long mais reprenant ce que je vous ai mis.
Ciao
Fred
Bon alors concernant les `fermant le sed.. effectivemment ca vient du fait que j'ai fait tellement de changements/ tests... elles sont passées à la trappe..
Mais c'est effectivemment les "" sur les echo qui manquaient. Merci jipicy.
Apparemment c'est ok dans mon script original, beaucoup plus long mais reprenant ce que je vous ai mis.
Ciao
Fred
frederikk
Messages postés
15
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
9 avril 2008
9 avril 2008 à 22:30
9 avril 2008 à 22:30
Bon alors.... c'est assez étrange comme truc.. mais j'ai un second script, qui doit faire la même chose, et pareil !!!! il me transforme les doubles espaces en simple !!! je comprends plus !!!
voici le code :
STO1=`echo "$QUERY_STRING" | awk -F'&champ[1234]=' '{print $1}'`
ST1=`echo "$STO1" | awk -F'=' '{print $2}'`
ST2=`echo "$QUERY_STRING" | awk -F'&champ[1234]=' '{print $2}'`
ST3=`echo "$QUERY_STRING" | awk -F'&champ[1234]=' '{print $3}'`
ST4=`echo "$QUERY_STRING" | awk -F'&champ[1234]=' '{print $4}'`
# TRAVAIL SUR LES CHAMPS
N1=`echo "$ST1" | sed -e 's/%20/ /g'`
N2=`echo "$ST2" | sed -e 's/%20/ /g'`
N3=`echo "$ST3" | sed -e 's/%20/ /g'`
# Section de travail sur le fichier à ajouter
FICHIER=`echo "/tmp/${N1}/${N2}/${N3}"`
echo "ST3 = $ST3<br>"
echo "$N3"
exit
Et pareil.... si j'ai deux espaces, ca devient un seul ! pourtant j'ai bien "double-quoté"
voici le code :
STO1=`echo "$QUERY_STRING" | awk -F'&champ[1234]=' '{print $1}'`
ST1=`echo "$STO1" | awk -F'=' '{print $2}'`
ST2=`echo "$QUERY_STRING" | awk -F'&champ[1234]=' '{print $2}'`
ST3=`echo "$QUERY_STRING" | awk -F'&champ[1234]=' '{print $3}'`
ST4=`echo "$QUERY_STRING" | awk -F'&champ[1234]=' '{print $4}'`
# TRAVAIL SUR LES CHAMPS
N1=`echo "$ST1" | sed -e 's/%20/ /g'`
N2=`echo "$ST2" | sed -e 's/%20/ /g'`
N3=`echo "$ST3" | sed -e 's/%20/ /g'`
# Section de travail sur le fichier à ajouter
FICHIER=`echo "/tmp/${N1}/${N2}/${N3}"`
echo "ST3 = $ST3<br>"
echo "$N3"
exit
Et pareil.... si j'ai deux espaces, ca devient un seul ! pourtant j'ai bien "double-quoté"
6 avril 2008 à 20:18
avec un #!/bin/sh devant...
Je veux juste cela... j'ai beau essayer il me sort touours 1 seul espace.. alors que si je remplace %20 par des _ par exemple, j'ai bien deux _ à l'arrivée.
Ciao
Fred