我有这种格式的文件
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但仍然无法正常工作。我不知道,希望有人可以提供帮助。
答案 0 :(得分:5)
awk -F'[.,]' '{print $2,$3}' OFS="." file
hbrxly.com
hbrxly.com
hbrxly.com
nsmodel.com
panbao.net
sznissei.com
tauri.com
vemega.net
答案 1 :(得分:1)
$ grep -oP '^[^.]+\.\K[^.]+\.[^.,]+' ip.txt
hbrxly.com
hbrxly.com
hbrxly.com
nsmodel.com
panbao.net
sznissei.com
tauri.com
vemega.net
如果您需要字符串到,
$ grep -oP '^[^.]+\.\K[^,]+' ip.txt
hbrxly.com
hbrxly.com
hbrxly.com
nsmodel.com
panbao.net
sznissei.com
tauri.com.cn
vemega.net
答案 2 :(得分:1)
awk -F, '{sub(/^[^.]*\./,"",$1)} {print $1}' infile
hbrxly.com
hbrxly.com
hbrxly.com
nsmodel.com
panbao.net
sznissei.com
tauri.com.cn
vemega.net
For unique domain names.
awk -F, '{sub(/^[^.]*\./,"",$1)} {print $1}' infile |sort -u
Or as sp asic suggested
awk -F, '{sub(/^[^.]*\./,"",$1)} !seen[$1]++{print $1}' infile
答案 3 :(得分:0)
$ sed 's/[^.]*\.\([^,]*\).*/\1/' file
hbrxly.com
hbrxly.com
hbrxly.com
nsmodel.com
panbao.net
sznissei.com
tauri.com.cn
vemega.net
答案 4 :(得分:0)
perl -ne ' use strict; use warnings; $_ =~ m/(.*?)\.(.*?),(.*)/g; {print $2, "\n"}' file
<强>输出强>
hbrxly.com
hbrxly.com
hbrxly.com
nsmodel.com
panbao.net
sznissei.com
tauri.com.cn
vemega.net
答案 5 :(得分:0)
在GNU awk中。它仅打印每个域的第一个出现,并且还使用host.subdomain.domain.tldn
等地址。
$ awk -F, '(d=gensub(/^.*\.([^.]+\.[^.]+)$/,"\\1","g",$1)) && !seen[d]++ {print d}' file
hbrxly.com
nsmodel.com
panbao.net
sznissei.com
com.cn
vemega.net
如果你想要子域名(即除了主机名之外的所有东西),那么:
$ awk -F, '(d=gensub(/^[^.]+\.(.+)$/,"\\1","g",$1)) && !seen[d]++ {print d}' file
hbrxly.com
nsmodel.com
panbao.net
sznissei.com
tauri.com.cn
vemega.net