我一直试图将这个工作好几周,我知道这是一个简单的awk脚本,但我似乎无法取得很大进展。有什么想法吗?
我正在处理两个.txt文件。
文件1(第1列具有相同的值) -
1 1000 1
1 1003 3
1 1020 6
1 167999 5
1 167222 4
文件2(第1列具有相同的值) -
1 1000 1050
1 167000 168000
我想在文件1的第2列中搜索属于文件2的第2列和第3列中指定的范围内的值。然后,我想在现在指定的范围内找到文件1中第3列的平均值,并输出平均值列表。任何帮助都非常感谢,因为我还是编码世界的新手!
答案 0 :(得分:0)
这是一个可以帮助您入门的代码片段:
awk -v rangefile=file2 '
BEGIN {
ranges=0
while((getline < rangefile) > 0) {
++ranges
low[ranges] = $2
high[ranges] = $3
}
}
{
for(i = 1; i <= ranges; i++) {
if($2 >= low[i] && $2 <= high[i]) {
...
}
}
}
END {
for(i = 1; i <= ranges; i++) {
print low[i], high[i]
}
}
' file1
我没有填写......部分内容,但我希望以上内容涵盖了棘手的部分。对于......,您可以使用数组作为总和,并计算类似于低和高的数组。在END块中,您将重复for(i ...)循环,并在该循环内打印出您想要的输出格式。