Я уже давно ищу решение этой проблемы, но не могу понять это самостоятельно.
Итак, у меня есть куча HTML-блоков кода, и я хочу найти конкретную строку, которая содержится в одном из внутренних тегов, и, если есть совпадение, я хочу вернуть значение родительского тега. Вот пример "
<li rel="Returns this value">
<some other tags and elements here />
<a class="link"><span>This match</span></a>
</li>
Мы ищем строку This match
, и она вернет Returns this value
. Это возможно в awk? Если нет, то как проще всего это сделать? Я не возражаю против какого-либо решения, однако предпочтение отдается 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
}
}
}'
При использовании в приведенном выше примере возвращается This match
. Большое спасибо за предложения.