我正在尝试制作一个Linux bash
script
以下载一个html
页面,从该html
页面中提取数字并将其分配给变量。
html
页面上有几行,但我对此感兴趣:
<tr>
<td width="16"><img src="img/ico_message.gif"></td>
<td width="180"><strong> TIME 1</strong></td>
<td width="132">
<div align="right"><strong>61</strong></div></td>
</tr>
<tr>
<td width="16"><img src="img/ico_message.gif"></td>
<td width="180"><strong> TIME 2</strong></td>
<td width="132">
<div align="right"><strong>65</strong></div></td>
</tr>
</table></td>
每次下载页面时,我都必须读取5
和11
(strong>
广告之间的行</strong
和61
中的两个值在此示例中为65
;在此示例中为61
和65
,但每次都不同)
从html
提取的两个值必须能够将它们分配给两个变量
感谢任何想法
答案 0 :(得分:0)
假设我们有一个名为page.html
的页面。您可以首先使用grep
选择行,然后使用sed
提取值,最后使用awk
迭代选择值:
$ var0=$(cat page.html |\
grep -Ee "<strong>[0-9]+</strong>" -o |\
sed -Ee "s/<strong>([0-9]+)<\/strong>/\1/g" |\
awk 'NR%2==1')
$ var1=$(cat page.html |\
grep -Ee "<strong>[0-9]+</strong>" -o |\
sed -Ee "s/<strong>([0-9]+)<\/strong>/\1/g" |\
awk 'NR%2==0')
输出:
$ echo $var0
61
$ echo $var1
65
答案 1 :(得分:0)
这可能对您有用(GNU sed):
sed -rn '/TIME/{:a;N;5bb;11bb;ba;:b;s/.*TIME ([^<]*).*<strong>([^<]*).*/var\1=\2/p}' file
使用前面代码中与TIME
关联的整数来区分两个变量名。