awk retour valeur de la balise HTML parent si son contenu de la balise enfant est associé - possible?

StackOverflow https://stackoverflow.com/questions/3783736

  •  05-10-2019
  •  | 
  •  

Question

J'ai cherché une solution à ce problème depuis un certain temps, mais je ne peux pas le comprendre moi-même.

J'ai donc tas de blocs HTML de code, et je veux rechercher chaîne spécifique qui est contenu dans l'une des balises internes et s'il y a match, je veux retourner sa valeur de balise parent. Voici l'exemple de "

<li rel="Returns this value">
    <some other tags and elements here />
    <a class="link"><span>This match</span></a>
</li>

Nous recherchons des chaînes This match et il retournera Returns this value. Est-ce possible dans awk? Dans le cas contraire, ce qui est moyen le plus facile d'y arriver? Cela ne me dérange pas de solution, mais awk ou un outil de ligne de commande similaire serait préféré. Je suis runing sur le serveur Ubuntu et j'ai accès root, donc si besoin je pouvais compter sur d'autres langues, telles que Ruby, Python, Perl, PHP, et d'autres.

Jusqu'à présent, j'ai été en mesure de rechercher la chaîne entre les balises span et retourner son contenu. On pourrait toutefois se faire beaucoup plus facile avec la commande sed simple, donc il n'y a pas une grande utilité pour le moment. Cependant, il peut être encore être utile et peut être amélioré pour faire ce que je besoin de le faire, il faut en tenir:

awk 'BEGIN{RS="";FS="</span>"}
/li/{
 for(i=1;i<=NF;i++){
    if($i ~ /span/){
        gsub(/.*span>/,"",$i)
        print $i
    }    
 } 
}'

Lorsqu'il est utilisé sur exemple ci-dessus, il retournera This match. Merci beaucoup pour vos suggestions.

Était-ce utile?

La solution

vous ne pouvez pas parse html avec des expressions régulières.

Ce qui ne veut pas dire que vous ne pouvez pas parse html dans awk, bien que ce serait un gros travail et je ne l'ai jamais entendu parler de quelqu'un à le faire.

Si vos objectifs sont bien définis et l'entrée est assez uniforme et vous pouvez garantir certaines choses à propos de l'imbrication des balises en vous entrez, vous pourriez être en mesure de le gérer.

Cependant, pour la plupart, est awk le mauvais outil pour le travail. Il vaut mieux choisir une langue qui a un moteur d'analyse syntaxique HTML est disponible et l'utiliser. Perl, python, php, ruby ??... beaucoup de choix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top