我有两个大文件。
文件1如下所示:
10 2864001 2864012
10 5942987 5943316
文件2如下所示:
10 2864000 28
10 2864001 28
10 2864002 28
10 2864003 27
10 2864004 28
10 2864005 26
10 2864006 26
10 2864007 26
10 2864008 26
10 2864009 26
10 2864010 26
10 2864011 26
10 2864012 26
所以我想以这样的方式创建一个for循环,
所以上面例子的输出应该是File 1第一行的文件2的第三列的总和,它是347.我试图使用NR和FNR,但到目前为止我还没能做到。你能帮我生成awk脚本吗?
非常感谢
答案 0 :(得分:0)
转录,所以可能存在拼写错误:
awk '
BEGIN { lastFNR=0; acount=0; FIRST="T"}
FNR < lastFNR {FIRST="F"; aindex=0; next}
FIRST=="T" {
sta[acount] = $2
fna[acount] = $3
acount += 1
lastFNR=FNR
}
FIRST=="F" && $2 >= sta[index] && $2 <= fna[aindex] {
sum[aindex] += $3
lastFNR = FNR
}
FIRST=="F" && $2 > fna[aindex] {
aindex ==1
if (aindex > acount) { FIRST="E" }
}
END {
for(aindex=0; aindex<acount; +=aindex) {
print sta[aindex], "through", fna[index], "totals", sum[aindex]
}
}
' file 1 file2
答案 1 :(得分:0)
你可以尝试
awk -f s.awk file1 file2
其中s.awk
是
NR==FNR {
a[$1,$2]=$3
next
}
($1,$2) in a {
do {
s+=$3
if ((getline)+0 < 1) break
} while ($2 != a[$1,$2])
print s
}
{ s=0 }
输出:
319