- 论坛徽章:
- 4
|
20可用积分
本帖最后由 方兆国儿 于 2016-12-10 10:37 编辑
文本内容如下,约近9000多行,统计后发现格式只有下面这几种:
截取后格式为:.chinaunix.net
保留两个点及之间内容
目前我的做法是:
- cat a.txt |sort |uniq|egrep -i 'get|post|connect'|cut -d'"' -f2|cut -d' ' -f2|sort|uniq>out.txt
- cat out.txt|grep -i '^http'>http.txt
- cat out.txt|grep -iv '^http'>nohttp.txt
- cat http.txt|cut -d'/' -f3|sort|uniq|awk -F'.' '{print "."$(NF-1)"."$NF}'|sort|uniq>out1.txt
- cat nohttp.txt|cut -d':' -f1|awk -F'.' '{print "."$(NF-1)"."$NF}'>out2.txt
- cat out1.txt out2.txt >ooxx.txt
- cat ooxx.txt|sort|uniq>result.txt
复制代码
我觉得自己写的代码太傻了,请高人指点迷津,能否用sed 直接匹配截取出来,感激涕零!
详情见36楼:http://bbs.chinaunix.net/thread-4256923-4-1.html
最终结果:如下。- #cat domainExtraction.awk
复制代码- #!/usr/bin/awk -f
- # Run as gawk
- # ./domainExtraction.awk inputFiles
- #
- BEGIN {
- FS="";
- print "START";
- }
- {
- match($0,/.*"(GET|POST|CONNECT) (https?:\/\/)?[^/]*((\.[^/:]*){2})/,a);
- if(!b[a[3]]++){
- print a[3];
- }
- }
- END {
- print "DONE";
- }
复制代码
在此,一并感谢下列CUer的帮助与鼓励,排名不分先后:
回复 4# yinyuemi
回复 5# moperyblue
回复 6# sunzhiguolu
回复 56# sditmaner
回复 2# 王楠w_n
于是,我现在陷入艰难的抉择中,究竟选择谁为最终答案?
回复 62# moperyblue
给出了awk的解决方案,而且花费自己的时间和耐心;
回复 64# sunzhiguolu
给出了perl的解决方案,同时帮助我重新认识了regex,意义重大。
选择这个答案之前,我得到了如下回复:
最后,再次感谢大家的帮助。
|
|