我有两个文件。 domain.txt包含一些域
facebook.com
google.com
yahoo.com
site.txt包含域下的一些站点,以及它们的 URL 编号。
music.google.com 2
image.google.com 3
music.facebook.com 8
image.facebook.com 4
map.yahoo.com 4
new.yahoo.com 7
我将选择站点,其 URL 编号大于其域的平均 URL 编号。例如,google.com的平均 URL 数为(2+3)/2=2.5,因此会选择image.google.com 。
我写了这样的awk脚本:
BEGIN {
#read all domains into memory
while(getline dom < "./domain.txt" > 0){
domain[dom]=0;
}
#count URLs number and sites number under each domain
for (dom in domain){
sitenumber=0;
close("./site.txt")
while(getline < "./site.txt" >0){
if(match($1,"."dom"$")){
domain[dom]+=$2;
sitenumber++;
printf("%s\n",$0) >> "./sitesunderdomain";
}
}
avgsitenumber = domain[dom]/sitenumber;
system("cat ./sitesunderdomain") #test output
close("./sitesunderdomain")
while(getline < "./sitesunderdomain" >0){ #loop A
print "why1" #test output
if($2>=avgsitenumber){
print "why2" #testoutput
print $0,avgsitenumber>>"./result"
}
}
system("> ./sitesunderdomain")
}#for
}
然后我在 bash 中运行 awk 脚本,得到输出:
music.facebook.com 8
image.facebook.com 4
why1
why2
why1
music.google.com 2
image.google.com 3
map.yahoo.com 4
news.yahoo.com 7
./结果是
music.facebook.com 8 6
但正如我所料,输出应该是
music.facebook.com 8
image.facebook.com 4
why1
why2
why1
music.google.com 2
image.google.com 3
why1
why2
why1
map.yahoo.com 4
news.yahoo.com 7
why1
why2
why1
./result应该是:
music.facebook.com 8 6
image.google.com 3 2.5
news.yahoo.com 7 5.5
似乎在位置loop A
,getline
返回google.com和yahoo.com的时间。
为什么?0
dom