【发布时间】:2017-01-08 17:04:24
【问题描述】:
我有这种格式的文件
81535883v2a1.hbrxly.com,a,209.99.40.222
81535883v2a1.hbrxly.com,ns,dns10.parkpage.foundationapi.co
81535883v2a1.hbrxly.com,txt,|v=spf1 a -all
81535883v2a1.nsmodel.com,a,23.245.38.79
81535883v2a1.panbao.net,cname,p.dcoin.co
81535883v2a1.sznissei.com,a,23.224.47.73
81535883v2a1.tauri.com.cn,a,23.244.110.119
81535883v2a1.vemega.net,a,103.232.215.133
我想把它提取成这样的东西(仅限第一行和域)
hbrxly.com
hbrxly.com
hbrxly.com
nsmodel.com
panbao.net
sznissei.com
tauri.com
vemega.net
我尝试过使用 sed,awk,grep 但仍然无法正常工作。不知道,希望有人能帮忙。
【问题讨论】:
-
解决此问题的最佳方法是将正则表达式与 re 模块一起使用。我的正则表达式很生疏,但这可能有效:
url = re.compile(r'.+\.([A-Za-z0-9]+\.[com|ne t]{3}).+$')和url.findall(line)。有人可能会想出一个更合适的字符串。 -
你真的希望
81535883v2a1.tauri.com.cn畸形成tauri.com吗? -
@JamesBrown :
echo 81535883v2a1.tauri.com.cn |awk -F, '(d=gensub(/^.*\.([^.]+\.[^.]+)$/,"\\1","g",$1)) && !seen[d]++ {print d}'com.cn -
嗯,是吗? OP 是否需要格式错误的输出,即
*.tauri.com.cn打印问题中的tauri.com还是他想要正确的信息? -
嗯..不确定。虽然
tauri.com.cn对我来说更有意义。让 OP 来决定。