awk возвращает значение родительского тега HTML, если содержимое его дочернего тега совпадает - возможно?

Я довольно долго искал решение этой проблемы, но не могу понять мой собственный.

Итак, у меня есть несколько блоков кода HTML, и я хочу найти конкретную строку, которая содержится в одном из внутренних тегов, и если есть совпадение, я хочу вернуть его значение родительского тега. Вот пример: «

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

Мы ищем строку Это совпадение , и оно возвращает Возвращает это значение . Возможно ли это в awk? Если нет, как это проще всего сделать? I не возражайте против любого решения, однако было бы предпочтительнее использовать awk или аналогичный инструмент командной строки. Я работаю на сервере Ubuntu и у меня есть root-доступ, поэтому при необходимости я мог бы полагаться на другие языки, такие как Ruby, Python, Perl, PHP , и др.

До сих пор мне удавалось искать строку между тегами span и возвращать ее содержимое. Однако это можно было бы сделать намного проще с помощью простой команды sed, так что пока от нее мало пользы. Тем не мение, он может быть по-прежнему полезен и может быть улучшен, чтобы сделать то, что мне нужно, поэтому здесь:

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

При использовании в приведенном выше примере он вернет Это совпадение . Большое спасибо за предложения.

1
задан Gargauth 24 September 2010 в 02:02
поделиться