Bash 从两个单词和特定行中提取文本
我正在尝试制作一个linuxBash 从两个单词和特定行中提取文本,bash,awk,sed,wget,Bash,Awk,Sed,Wget,我正在尝试制作一个linuxbash脚本来下载一个html页面,从这个html页面提取数字并将它们分配给一个变量 html页面有几行内容,但我对这些内容感兴趣: <tr> <td width="16"><img src="img/ico_message.gif"></td> <td width="180"><strong> TIME 1</strong></td>
bash
脚本
来下载一个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>
时间1
61
时间2
65
每次我下载页面时,我必须阅读这两个值在
strong>
和之间的5和11行中,我们假设有一个名为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')
这可能适用于您(GNU-sed):
sed-rn'/TIME/{:a;N;5bb;11bb;ba;:b;s/*TIME([^添加到目前为止已经尝试过的命令组合。Bash不是适合此作业的工具。我会使用HTML感知工具(在我的情况下)如果标记没有太坏,或者使用Perl。您应该使用xpath
实用程序来解析xml/html。有一些命令行xpath
工具可以从bash脚本调用。欢迎使用Stack Overflow!抱歉,StackOverflow不是这样工作的。“我想做X,请给我一些提示和/或示例代码”请访问并阅读,特别是阅读说明如何使用Xpath从html中提取链接的答案。并查看页面以了解Xpath。有了这两个,我100%相信您可以做到;-)。如果您仍然无法做到,请在此处发布您的努力,我们很乐意为您提供帮助。
$ echo $var0
61
$ echo $var1
65
sed -rn '/TIME/{:a;N;5bb;11bb;ba;:b;s/.*TIME ([^<]*).*<strong>([^<]*).*/var\1=\2/p}' file