打击,打印一个值

时间:2015-04-19 07:45:14

标签: bash

我必须显示下面的数字:

<td class="sorted"><strong>Impact Factor </strong></td>
<td>162.500</td>

我曾尝试过grep,sed,awk但是无法让它工作。数字图在下一行,我试图使用find找到顶部代码并将其存储为名为$ temp的变量。然后尝试打印下一行,希望删除之后的td引号。

以下是我的代码谢谢!

temp=$(fgrep '<td class="sorted"><strong>Impact Factor </strong></td>' $i)
impact=$(sed -n '/$temp/ {n;P}' $i)

$ i存储了一个html页面。

我可以使用这部分代码将数字输出| head -n 1 | cut -d'>' -f4- | cut -d'<' -f1,否则目标是162.5

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用以下grep命令使用PCRE正则表达式。

$ grep -Pzo '<td class="sorted"><strong>Impact Factor </strong></td>[^>]*>\K\d+(?:\.\d+)?' file
162.500

答案 1 :(得分:0)

您可以使用grep的-A选项获取下一行:

grep 'sorted' -A1 $i|grep -v sorted|grep td|cut -d">" -f2|cut -d"<" -f1

(注意:为简洁起见,我缩短了第一个grep搜索字符串)