【问题标题】:Extract data between two tags提取两个标签之间的数据
【发布时间】:2016-11-03 14:35:46
【问题描述】:

经过大量搜索和阅读,我成功完成了一半的工作。

这是字符串:

<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

谁能帮忙?

【问题讨论】:

  • 如果你有 pcre,用 grep,grep -oP '^.*&lt;a.href="[^"]*"&gt;\K[^&lt;]*|&lt;/a&gt;\K[^&lt;]*' ip.txt | paste -d '' - -

标签: awk sed grep


【解决方案1】:

你已经很接近了:

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

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

【讨论】:

    【解决方案2】:

    您可以尝试以下 awk 解决方案 -

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

    需要使用多个多个(&gt;,&lt;) 字段分隔符。

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      相关资源
      最近更新 更多