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 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 hmm 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 smile) à 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 big_smile

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

fabux a écrit :
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