Qui aurait de meilleurs yeux que moi ? La solution doit être évidente, mais, franchement, je me casse le nez.
Le problème :
Il s'agit d'extraire une url d'un fichier htm 'provht1' (le projet est d'automatiser la correction de pages fautives)
Si je fais :
old="http:\/\/www.geographiques.com\/spip\/article.php3?id_article=18"
sed -n "/$old/=" provht1 > provold
provold donne le numero des lignes contenant l'url et ça marche très bien
Mais si je fais :
old=$(sed -n "$nlUM"p provurl1) # pour extraire l'url d'un fichier où il est ligne $nlUM
sed -n "/$old/=" provht1 > provold
provold est vide. old n'a donc pas été trouvée. Pourtant
echo "old = $old" donne :
old = http:\/\/www.geographiques.com\/spip\/article.php3?id_article=18
l'url a donc été correctement extraite par old=$(sed -n "$nlUM"p provurl1)
Bien entendu, comme on le voit, j'ai protégé les '/'
Et toutes les autres url sont détectées correctement. Il n'y a que celle-là (sur cette page !) qui coince.
J'ai beau la regarder sous toutes les coutures, je sèche.
Quelqu'un a-t-il de meilleurs yeux ?
# Ca marche.
Posté par Pascal Terjan (site web personnel) . Évalué à 2.
[^] # Re: Ca marche. NON mais ou donc est-ce que ca coince ?
Posté par Christian Prior . Évalué à 1.
Je me suis fait un fichier provht1 ne contenant que la ligne à chercher
En utilisant :
old=$(sed -n "$nlUM"p provurl1)
sed -n "/$old/=" provht1
Je trouve :
old = http:\/\/www.geographiques.com\/spip\/article.php3?id_article=18
provht1 = http://www.geographiques.com/spip/article.php3?id_article=18
nbtrouv = 0
Donc, chez moi, cela ne marche pas.
Mais en allant plus loin dans le fichier provurl1, je constate :
old = http:\/\/www.geographiques.com\/
provht1 = http://www.geographiques.com/spip/article.php3?id_article=18
nbtrouv = 1
Intéressant, non ? Le pb serait dans spip/article.php3?id_article=18. Je deviens fou ! Bon maintenant je fais :
$ old="http:\/\/www.geographiques.com\/spip\/article.php3?id_article=18"
$ sed -n "/$old/=" provht1
1
et, bien sûr :
$ old="http:\/\/www.geographiques.com\/spip"
$ sed -n "/$old/=" provht1
1
$ old="http:\/\/www.geographiques.com\/ploutch"
$ sed -n "/$old/=" provht1
0
Le pb serait dans la façon dont on se procure $old ?
Par acquis de conscience, je me tape ça dans le terminal pour éliminer un problème lié à sh monscript.sh
$ cat provht1
http://www.geographiques.com/spip/article.php3?id_article=18
$ old=$(sed -n 33p provurl1) # ligne 33 celle de l'url
$ sed -n "/$old/=" provht1
0 # grrh !
$ old=$(sed -n 35p provurl1) # ligne 35 = http:\/\/www.geographiques.com\/
$ sed -n "/$old/=" provht1
1
M'enfin. Incroyable cette histoire. Ca doit être un truc hyper évident. Tellement que je ne le vois pas :-(
# Encodage ?
Posté par Kerro . Évalué à 2.
Pour jetter un oeil "dans" le fichier:
# od -t a monfichier
[^] # Re: Encodage ? Je vais voir
Posté par Christian Prior . Évalué à 1.
pop
http:\/\/www.geographiques.com\/spip\/article.php3?id_article=18
platsch
J'ai :
$ old=$(sed -n 2p provurl1)
$ echo $old
http:\/\/www.geographiques.com\/spip\/article.php3?id_article=18
$ sed -n "/$old/=" provht1
1 # ca marche
Tandis que si j'utilise mon provurl1, j'ai :
$ old=$(sed -n 33p provurl1)
$ echo $old
http:\/\/www.geographiques.com\/spip\/article.php3?id_article=18
$ sed -n "/$old/=" provht1
0 # ca ne marche pas
Et sur le terminal, je ne vois pas la différence entre les deux lignes :
http:\/\/www.geographiques.com\/spip\/article.php3?id_article=18
http:\/\/www.geographiques.com\/spip\/article.php3?id_article=18
On va voir avec od... demain. Là, je n'en peux plus : dodo !
C'est curieux parce que mon fichier provurl1 a été fabriqué par un script bash qui extrait les url à partir de href="http://etc". En principe, c'est de l'ASCII de base et pour toutes les url extraites, aucun problème sauf celle-là et même une partie de celle-là 'spip... etc' Une scorie se serait donc glissée dans cette partie lors de l'opération d'extraction ? Possible, mais inquiétant car c'est une centaine de pages que je voudrais vérifier
[^] # Re: Resolu
Posté par Christian Prior . Évalué à 1.
Un méchant espace s'était ajouté à la fin de mon url. Evidemment totalement invisible cf les deux lignes ci-dessus produites par couper/coller
Reste maintenant à savoir pourquoi et comment cet espace est venu polluer mon url. Mais c'est une autre histoire
Merci aussi à Pascal qui m'a donné un moyen d'arrêter de tourner en rond
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.