【问题标题】:parse word from html file从 html 文件中解析单词
【发布时间】:2013-12-02 21:12:45
【问题描述】:

我在尝试从 html 文件中提取单词时遇到了很多麻烦。 html 文件中的行如下所示:

<span id="result">WORD</span>

我想把 WORD 弄出来,但我想不通。到目前为止,我得到了:

 grep 'span id="result"' FILE 

这让我明白了。我也试过:

sed -n '/<span id="result">/,/<\/span>/p' FILE

这也不起作用。 我知道这可能是一个非常简单的问题,但我才刚刚开始,所以我真的可以使用一些帮助。

【问题讨论】:

    标签: bash sed awk grep


    【解决方案1】:

    不要使用正则表达式来解析 html。

    使用 html 解析器。

    我的Xidel 的语法最短:

    xidel FILE -e "#result"
    

    【讨论】:

      【解决方案2】:

      这是awk的任务
      我猜你在同一个文件中有其他行,所以必须搜索span id

      echo "<span id="result">WORD</span>" | awk -F"[<>]" '/span id/ {print $3}'
      WORD
      

      【讨论】:

        【解决方案3】:

        你可以试试

        awk -f ext.awk input.html
        

        input.html 是您的输入 html 文件,ext.awk

        {
            line=line $0 RS
        }
        
        END {
            match (line,/<span id="result">([^<]*)<\/span>/,a)
            print a[1]
        }
        

        这将在换行符处提取内容..

        【讨论】:

          【解决方案4】:

          grep 与向后引用一起使用:

          grep -Po '(?<=<span id="result">)\w+'
          

          括号之间的表达式是向后引用;它没有被捕获,但用作以下正则表达式部分的测试:如果出现表达式,则捕获的模式在此处仅为 \w+。添加选项-o只输出单词;选项-P 启用前向和后向引用。

          如果你想修改这个正则表达式,请注意grep,后向引用必须有一个固定的大小。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-10-03
            • 2012-07-17
            • 2013-12-31
            • 2015-07-15
            • 1970-01-01
            • 1970-01-01
            • 2016-11-20
            相关资源
            最近更新 更多