我一直在寻找这个问题的解决方案很长一段时间,但我自己无法弄清楚。
所以我有一堆 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
. 非常感谢您的建议。