0

我有一个如下所示的 HTML 文件:

<td class='job-title'>
<h3>
<a href="/postings/46670">Line Cook</a>
</h3>
</td>

我正在尝试Line Cook从上面的 HTML 中获取 的值。我将如何使用 grep 和正则表达式来做到这一点?

4

3 回答 3

2

这条简短的 grep 行应该可以完成这项工作:

grep -oP "(?<=>)[^<]*" file 

但是,您的 HTML 代码必须采用该格式(例如>Line Cook<)必须位于一行,否则 grep 将失败。如果 HTML 很大,最好使用解析器。

于 2013-02-07T22:47:28.020 回答
0

这可能是也可能不是您想要的,具体取决于文件的其余部分:

$ gawk -F'[<>]' -v RS='</td>\n' '{print $(NF-4)}' file
Line Cook
于 2013-02-09T21:52:14.200 回答
0

我也有类似的挑战。我需要使用 Jenkins 的 shell 脚本捕获 HTML 响应中最后一个表格单元格的内容。

<BODY bgcolor=#dddddd>
<TABLE bgcolor=#dddddd border=1>
<TR>
<TD valign="top"><B>aliasName</B></TD>
<TD>jms_aliasName</TD>
</TR>
<TR>
<TD valign="top"><B>messageCount</B></TD>
<TD>0</TD>
</TR>
</TABLE>
</BODY>

使用 curl 调用服务以创建此页面,我将其通过管道传输到以下内容并放入变量中。

response=`/usr/bin/curl -s http://$host:$port/invoke/CustomService?aliasName=jms_aliasName | sed -n '/<TD>/,/<\/TD>/H; /<TD>/h; /\/TD/{x;s/<TD>\(.*[^\n]\)\n*<\/TD>/\1/p;}' | tail -n 1`

感谢其他人提供了神奇的 sed 命令。

| sed -n '/<TD>/,/<\/TD>/H; /<TD>/h; /\/TD/{x;s/<TD>\(.*[^\n]\)\n*<\/TD>/\1/p;}' | tail -n 1
于 2016-10-21T16:34:07.233 回答