在1个文件中的指定范围内查找文件2中的数字,然后计算该范围内另一列的平均值

时间:2016-12-21 05:35:09

标签: search awk find average

我一直试图将这个工作好几周,我知道这是一个简单的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列的平均值,并输出平均值列表。任何帮助都非常感谢,因为我还是编码世界的新手!

1 个答案:

答案 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 ...)循环,并在该循环内打印出您想要的输出格式。

相关问题