我有一个HTML文件,如下所示:
<td class='job-title'>
<h3>
<a href="/postings/46670">Line Cook</a>
</h3>
</td>
我正在尝试从上面的HTML中获取Line Cook
的值。
我将如何使用grep和正则表达式来实现这一目标?
答案 0 :(得分:2)
这个简短的grep线应该可以胜任:
grep -oP "(?<=>)[^<]*" file
但是,您的HTML代码必须采用该格式(例如>Line Cook<
)必须在一行上,否则grep将失败。如果HTML很大,你最好转向解析器。
答案 1 :(得分:0)
这可能是您想要的,也可能不是您想要的,具体取决于文件的其余部分:
$ gawk -F'[<>]' -v RS='</td>\n' '{print $(NF-4)}' file
Line Cook
答案 2 :(得分: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