Problème lorsque retour à la ligne avec grep
Bonjour,
J'ai le code bash :
Code:
grep 'name="subaffil"' $fic |sed -e 's|^.*class="collapsed">||' |sed ':z;N;$!b z;s/\n/;/g' | sed -e 's|</a></h4></div></div>.*$||' -e 's|<BR>|, |g'
qui vise à récupérer l'affiliation sur des pages web d'auteurs d'at ideas, telles que :
https://ideas.repec.org/e/pca127.html
Exécutée à grande échelle (44000 pages), la majorité des affiliations est bien repérée et enregistrée.
QUESTION 1 :
Cependant, je me suis aperçue que cela fonctionne bien lorsque j'ai une page où tout est sur la même ligne, comme :
Code:
blabla <............name="subaffil">blablabla.....class="collapsed"> affiliation,univ,pays</a></h4></div></div>....blabla
Mais lorsque j'ai sur plusieurs lignes :
Code:
1 2 3
| blabla <............name="subaffil">blablabla....class="collapsed"> affiliation
univ
pays</a></h4></div></div>....blabla |
il semble alors qu'il s'arrête à la fin de la première ligne et supprime tout le reste.. parce que le résultat est : affiliation
mais pas univ, ni pays.
J'ai cherché comment modifier le code, mais je ne sais pas comment arranger ça. Je pense qu'il faudrait mettre une suppression des retours chariots avant de commencer à découper entre class="collapsed"> et </a></h4></div></div>, mais alors il ne pourra plus utiliser le repérage d'une ligne pour savoir quand découper, si ?
QUESTION 2 :
De plus, lorsque j'ai 1 ou 2 affiliations, ça fonctionne bien, mais lorsque j'ai 3 ou 4, ca ne fonctionne plus correctement : c'est limité aux 2 premières affiliations. Quelle est l'astuce pour aussi prendre en compte les 3, 4 voire 5eme affiliations ???
Merci de votre aide,
cordialement