BEGIN{
topurl = "http://headlines.yahoo.co.jp/hl"
if(field == "") field = "soci"
awk="awk"
### (1) 先頭のページを取得
fname = sprintf("%s-%03d.html",field,1)
url = sprintf("%s?c=%s&t=l",topurl,field)
cmd = sprintf("wget -O %s \"%s\"",fname,url)
system(cmd)
### (2) pages を取得
pages = getpages(fname)
for(j=1;j<pages;j++){
### (3) 2 ページ目以降を取得
fname = sprintf("%s-%03d.html",field,j+1)
url = sprintf("%s?c=%s&t=l&p=%d",topurl,field,j)
cmd = sprintf("wget -O %s \"%s\"",fname,url)
system(cmd)
}
### (4) [field]-lst1.html を作成
cmd = sprintf("%s -f yahoo2.awk",awk)
for(j=1;j<=pages;j++)
cmd = sprintf("%s %s-%03d.html",cmd,field,j)
cmd = sprintf("%s > %s-lst1.html",cmd,field)
system(cmd)
### (5) [field]-lst2.html を作成
cmd = sprintf("%s -f yahoo3-%s.awk -f yahoo3.awk",awk,field)
cmd = sprintf("%s %s-lst1.html > %s-lst2.html",cmd,field,field)
system(cmd)
}
##### pages の取得 #####
function getpages(fname, pages)
{
pages = 0
while (getline < fname){
if($0 ~ /^[1-9][0-9]*\/[1-9]/){
match($0,/\/[1-9][0-9]*/)
pages = substr($0,RSTART+1,RLENGTH-1)+0
break
}
}
close(fname)
return pages
}
ページの取得は getpages() という関数にしてあります。 全体の流れはそう難しくはないと思います。