【问题标题】:awk return parent HTML tag value if its child tag content is matched - possible?如果子标签内容匹配,awk 返回父 HTML 标签值 - 可能吗?
【发布时间】:2010-09-24 10:44:42
【问题描述】:

我一直在寻找这个问题的解决方案,但我无法自己解决。

所以我有一堆 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。非常感谢您的建议。

【问题讨论】:

    标签: awk html-parsing gawk


    【解决方案1】:

    一般you can't parse html with regular expressions.

    这并不意味着您不能在 awk 中解析 html,尽管这将是一项艰巨的工作,而且我从未听说有人这样做。

    如果您的目标定义明确并且输入非常统一,并且您可以保证输入中标签嵌套的某些事情,您也许可以管理它。

    但是,在大多数情况下,awk 是不适合这项工作的工具。最好选择一种具有可用 HTML 解析引擎的语言并使用它。 Perl、python、php、ruby...很多选择。

    【讨论】:

      猜你喜欢
      • 2012-07-03
      • 2018-07-08
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多