在两个标签之间提取数据

时间:2016-11-03 04:27:34

标签: awk sed grep

在广泛搜索和阅读之后,我设法完成了一半的工作。

这是字符串:

<td class='bold vmiddle'> Owner CIDR: </td><td><span class='jtruncate-text'><a href="http://3.abcdef.com/ip-3/encoded/czovL215aXAubXMvdmlldy9pcF9hZGRyZXNzZXMvNDIuMjI0LjAuMA%3D%3D">42.224.0.0</a>/12</span></td>

我需要提取42.224.0.0/12以制作42.224.0.0/12

现在我通过使用

设法获得42.224.0.0
sed -n 's/^.*<a.href="[^"]*">\([^<]*\).*/\1/p'

但我不知道如何提取/12

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

你非常接近:

sed -n 's/^.*<a.href="[^"]*">\([^<]*\)<\/a>\([^<]*\).*/\1\2/p' file

所需要的只是第二个捕获组:第一个匹配<\/a>的结束标记后<a>,第二个捕获组\([^<]*\)然后捕获所有内容但不包括结束</span>标签 替换字符串中的\1\2简单地连接两个捕获组匹配的内容,产生42.224.0.0/12样本输入。

答案 1 :(得分:0)

你可以尝试下面的awk解决方案 -

vipin@kali:~$ awk -F'>|<' '{print $(NF-6),$(NF-4)}' OFS="" kk.txt
42.224.0.0/12

需要使用多个多个(>,<)字段分隔符。