从html文件解析单词

时间:2013-12-02 21:12:46

标签: bash sed awk grep

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

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

我试图让WORD退出但我无法理解。到目前为止我已经:

 grep 'span id="result"' FILE 

哪个让我上线。我也试过了:

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

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

4 个答案:

答案 0 :(得分:2)

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

使用html解析器。

我的Xidel语法最短:

xidel FILE -e "#result"

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

你可以尝试

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]
}

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

答案 3 :(得分:0)

使用grep向后引用:

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

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

如果您想修改此正则表达式,请注意,对于grep,后向引用必须具有固定大小。