Я довольно долго искал решение этой проблемы, но не могу понять мой собственный.
Итак, у меня есть несколько блоков кода 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
}
}
}'
При использовании в приведенном выше примере он вернет Это совпадение
. Большое спасибо за предложения.