免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 方兆国儿
打印 上一主题 下一主题

[文本处理] 截取网址 [复制链接]

论坛徽章:
4
15-16赛季CBA联赛之北控
日期:2016-12-06 11:11:0115-16赛季CBA联赛之广夏
日期:2016-12-06 15:04:1515-16赛季CBA联赛之四川
日期:2016-12-06 15:59:51黑曼巴
日期:2016-12-09 20:24:05
51 [报告]
发表于 2016-12-06 11:30 |只看该作者
本帖最后由 方兆国儿 于 2016-12-06 15:31 编辑
  1. 重复内容。。请删除
复制代码

cu.zip

1.99 KB, 下载次数: 13

论坛徽章:
4
15-16赛季CBA联赛之北控
日期:2016-12-06 11:11:0115-16赛季CBA联赛之广夏
日期:2016-12-06 15:04:1515-16赛季CBA联赛之四川
日期:2016-12-06 15:59:51黑曼巴
日期:2016-12-09 20:24:05
52 [报告]
发表于 2016-12-06 12:44 |只看该作者
提交审核也就算了,编辑也审核,CU 真得变了。审核通过了,内容还是错的。
回复 2# 王楠w_n

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
53 [报告]
发表于 2016-12-06 12:51 |只看该作者
回复 1# 方兆国儿

  1. awk 'match($0,/.*"(GET|POST|CONNECT) ([^ ]+)/,a){match(a[2],/([^/][^/.]+\.[^/.]+)[/:]/,b);if(!c[b[1]]++)print b[1]}' cu.txt
  2. .icloud.com
  3. .ipip.net
  4. .qq.com
  5. .symcd.com
  6. .chinaunix.net
  7. .mukewang.com
  8. .imooc.com
  9. .comodoca.com
  10. .jobbole.com
  11. .img168.net
  12. .letsencrypt.org
  13. .wooyun.org
  14. .qbox.me
  15. .bell.ca
  16. .typora.io
  17. .iperf.fr

复制代码

论坛徽章:
4
15-16赛季CBA联赛之北控
日期:2016-12-06 11:11:0115-16赛季CBA联赛之广夏
日期:2016-12-06 15:04:1515-16赛季CBA联赛之四川
日期:2016-12-06 15:59:51黑曼巴
日期:2016-12-09 20:24:05
54 [报告]
发表于 2016-12-06 13:04 |只看该作者
回复 40# yinyuemi

烦请仁兄讲解,不太理解此处if(!c[b[1]]++)  多谢。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
55 [报告]
发表于 2016-12-06 13:15 |只看该作者
方兆国儿 发表于 2016-12-06 13:04
回复 40# yinyuemi

烦请仁兄讲解,不太理解此处if(!c]++)  多谢。



awk 去重复的用法
http://bbs.chinaunix.net/thread-2309494-1-1.html

论坛徽章:
4
15-16赛季CBA联赛之北控
日期:2016-12-06 11:11:0115-16赛季CBA联赛之广夏
日期:2016-12-06 15:04:1515-16赛季CBA联赛之四川
日期:2016-12-06 15:59:51黑曼巴
日期:2016-12-09 20:24:05
56 [报告]
发表于 2016-12-06 14:16 |只看该作者
回复 42# yinyuemi

看了仁兄对去重复的解释,有点绕。
小弟不才,也来解释一下,如有不周之初,请斧正,多谢。

AWK去重复原理:

第一:awk的基本命令格式 awk 'pattern{action}' 省略action时,默认action是{print}

第二:pattern 条件为真时,执行 {action}。

第三:例如,!array[input]++
首先,new 一个数组,此时arrary为假
然后,给arrary赋值,此时arrary为真
最后,取反

结果,当input被赋值后,再次被读入时,arrary返回真;取反后,返回假,action不执行。


btw,请教仁兄
() [/:]
此两部分的关系,是否后者作为备选方案进行匹配?
处理此文件之初,我便思考能否同时以双FS 进行同时处理,想必是不支持双FS吧?

match(a[2],/([^/][^/.]+\.[^/.]+)[/:]/,b)

论坛徽章:
4
15-16赛季CBA联赛之北控
日期:2016-12-06 11:11:0115-16赛季CBA联赛之广夏
日期:2016-12-06 15:04:1515-16赛季CBA联赛之四川
日期:2016-12-06 15:59:51黑曼巴
日期:2016-12-09 20:24:05
57 [报告]
发表于 2016-12-06 14:16 |只看该作者
回复 40# yinyuemi

回复 42# yinyuemi

看了仁兄对去重复的解释,有点绕。
小弟不才,也来解释一下,如有不周之初,请斧正,多谢。

AWK去重复原理:

第一:awk的基本命令格式 awk 'pattern{action}' 省略action时,默认action是{print}

第二:pattern 条件为真时,执行 {action}。

第三:例如,!array[input]++
首先,new 一个数组,此时arrary为假
然后,给arrary赋值,此时arrary为真
最后,取反

结果,当input被赋值后,再次被读入时,arrary返回真;取反后,返回假,action不执行。


btw,请教仁兄
() [/:]
此两部分的关系,是否后者作为备选方案进行匹配?
处理此文件之初,我便思考能否同时以双FS 进行同时处理,想必是不支持双FS吧?

match(a[2],/([^/][^/.]+\.[^/.]+)[/:]/,b)

论坛徽章:
4
15-16赛季CBA联赛之北控
日期:2016-12-06 11:11:0115-16赛季CBA联赛之广夏
日期:2016-12-06 15:04:1515-16赛季CBA联赛之四川
日期:2016-12-06 15:59:51黑曼巴
日期:2016-12-09 20:24:05
58 [报告]
发表于 2016-12-06 15:02 |只看该作者
回复 45# moperyblue

awk '{match($0,/.*"(GET|POST|CONNECT) (https?:\/\/)?[^/]*((\.[^/:]*){2})/,a)}!b[a[3]]++{print a[3]}' cu.txt
.icloud.com
.ipip.net
.qq.com
.symcd.com
.chinaunix.net
.mukewang.com
.imooc.com
.comodoca.com
.jobbole.com
.img168.net
.letsencrypt.org
.wooyun.org
.qbox.me
.bell.ca
.typora.io
.iperf.fr

看了仁兄的代码,思路清晰,非常感谢。

论坛徽章:
4
15-16赛季CBA联赛之北控
日期:2016-12-06 11:11:0115-16赛季CBA联赛之广夏
日期:2016-12-06 15:04:1515-16赛季CBA联赛之四川
日期:2016-12-06 15:59:51黑曼巴
日期:2016-12-09 20:24:05
59 [报告]
发表于 2016-12-06 15:02 |只看该作者
回复 45# moperyblue

awk '{match($0,/.*"(GET|POST|CONNECT) (https?:\/\/)?[^/]*((\.[^/:]*){2})/,a)}!b[a[3]]++{print a[3]}' cu.txt
.icloud.com
.ipip.net
.qq.com
.symcd.com
.chinaunix.net
.mukewang.com
.imooc.com
.comodoca.com
.jobbole.com
.img168.net
.letsencrypt.org
.wooyun.org
.qbox.me
.bell.ca
.typora.io
.iperf.fr

看了仁兄的代码,思路清晰,非常感谢。

论坛徽章:
4
15-16赛季CBA联赛之北控
日期:2016-12-06 11:11:0115-16赛季CBA联赛之广夏
日期:2016-12-06 15:04:1515-16赛季CBA联赛之四川
日期:2016-12-06 15:59:51黑曼巴
日期:2016-12-09 20:24:05
60 [报告]
发表于 2016-12-06 15:03 |只看该作者
回复 45# moperyblue

  1. <div> awk '{match($0,/.*"(GET|POST|CONNECT) (https?:\/\/)?[^/]*((\.[^/:]*){2})/,a)}!b[a[3]]++{print a[3]}' cu.txt</div><div>.icloud.com</div><div>.ipip.net</div><div>.qq.com</div><div>.symcd.com</div><div>.chinaunix.net</div><div>.mukewang.com</div><div>.imooc.com</div><div>.comodoca.com</div><div>.jobbole.com</div><div>.img168.net</div><div>.letsencrypt.org</div><div>.wooyun.org</div><div>.qbox.me</div><div>.bell.ca</div><div>.typora.io</div><div>.iperf.fr</div>
复制代码



看了仁兄的代码,思路清晰,非常感谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP