2つのファイルがあります。 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
そして./resultは
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
位置にあるようです、google.comとyahoo.comだったときにgetline
戻ります。
なんで?0
dom