#1 Le 19/06/2009, à 22:47
- hurley
[RESOLU] Trouver numéro de ligne
Bonsoir, dans un script, je récupère un code source d'une page internet, et je souhaite trouver le numéro de la première ligne qui commence par "<span class="Style3">Prix : "
j'ai fait
numLigne=$(sed -n "/^${<span class="Style3">Prix : }/=" "index.php?p=sell&order=prix")
en m'appuyant sur des forums mais mon problème vient de la présence de guillemets dans les caractères recherchés et peut être de < et >....
je retourne lire mais si vous avez une astuce, merci
Dernière modification par hurley (Le 20/06/2009, à 09:29)
HP Pavilion dv6-1160 - Ubuntu 10.04 LTS "The Lucid Lynx"
"Windows sert à avoir IE; IE sert à télécharger firefox; Firefox sert à télécharger linux"
Hors ligne
#2 Le 19/06/2009, à 23:58
- fabux
Re : [RESOLU] Trouver numéro de ligne
Salut,
Je suis en train d'essayer de comprendre toutes les subtilités entre $^\{}.....avec les scripts ou bout de ligne que je vois à droite à gauche donc excuse moi d'intervenir, mais peut-être en échappant avec \ les caractères dont tu as besoin qu'ils ne soit pas interprétés genre
numLigne=$(sed -n "/^${\<span class=\"Style3\"\>Prix\ : }/=" "index.php?p=sell&order=prix")
Cette ligne n'est certainement pas bonne, elle sert (j'espère ) à essayer de donner une piste.
Ou alors mettre avant cette ligne un truc genre i=<span class="Style3">Prix et remplacer dans sed (du coup comme ça est-ce qu'il "traduit" ou pas les caractères, faudra que je test tiens...à moins que tu me le dise avant...)
Allez ça t'a au moins permis de rigoler et d'avoir un up en même temps
May linux be with you
Comment poster un message.
Je me présente dans la doc
Hors ligne
#3 Le 20/06/2009, à 01:16
- AnsuzPeorth
Re : [RESOLU] Trouver numéro de ligne
Bjr,
Je vais peut etre dire une betise, mais je vois pas bien ce que tu fais avec un ${} avec autre chose qu'une variable à l'interieur ? Mais peut etre que c'est une subtilité de sed que je ne connais pas.
De plus, il n'y a pas de fichier en argument pour sed ? Ou peut etre que la ligne n'est pas complète ?
Je verrais un truc du genre (à tester)
numLigne=$(sed -n '/^<span class="Style3">Prix :/=' fichier.txt | head -n 1)
Le pipe head pour n'avoir que la premiere ligne (mais il serait possible de tout traiter dans sed je pense)
L'emploi de simple cote pour sed facilite les choses, les guillemets sont utiles lorsqu'on utilise des variables (pour ne pas devoir protéger la variable)
Grep peut afficher également le numero de ligne.
edit:
sans head (une commande de moins):
sed -n '/<span class="Style3">Prix :/{=;q}' fichier.txt
Dernière modification par AnsuzPeorth (Le 20/06/2009, à 01:19)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#4 Le 20/06/2009, à 09:20
- hurley
Re : [RESOLU] Trouver numéro de ligne
numLigne=$(sed -n "/^${\<span class=\"Style3\"\>Prix\ : }/=" "index.php?p=sell&order=prix")
je viens de tenter, il n'y a plus d'erreur mais il ne me renvoie aucune valeur pour numLigne avec
echo $numLigne
j'avais tenté
a=$(<span class="Style3">Prix)
numLigne=$(sed -n "/^${$a}/=" "index.php?p=sell&order=prix")
mais ça ne fonctionnait pas
au départ j'ai trouvé cette formulation sur un forum
numLigne=$(sed -n "/^${a}/=" monfichier.txt)
il cherchait la ligne contenant le caractère a dans monfichier.txt pour la supprimer
mon fichier s'appelle index.php?p=sell&order=prix et n'a pas d'extension car c'est un code source récupéré par wget
je viens de tenter également
numLigne=$(sed -n '/^<span class="Style3">Prix :/=' "index.php?p=sell&order=prix" | head -n 1)
mais il m'affiche une ligne blanche dans la console
par contre,
numLigne=$(sed -n '/<span class="Style3">Prix :/{=;q}' "index.php?p=sell&order=prix")
fonctionne a merveille!!!!!
Merci à vous deux pour vos réponses
HP Pavilion dv6-1160 - Ubuntu 10.04 LTS "The Lucid Lynx"
"Windows sert à avoir IE; IE sert à télécharger firefox; Firefox sert à télécharger linux"
Hors ligne