gpt4 book ai didi

linux - 在 AWK 中读取两个文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:07 25 4
gpt4 key购买 nike

我有一个看起来像这样的文件:

1   4
2 4
3 5
4 4
5 4
6 1
7 1
8 1
9 4
10 4
12 1
13 1
14 1
15 1
16 2
19 3
20 1
21 1
26 1
28 3
24 4
29 4
30 1

第 1 列是序列号,第 2 列是数值。我想计算特定范围之间的值的总和,例如:对 column2 中介于 2 和 7 之间的值求和(来自 column1)

我通过以下 awk 一个衬里实现了这一点:

awk '{if ($1 >= 2 && $1 <= 7) x += $2 } END {print x}' file_name #output is 20

问题是我想读取其他文件 2 的范围:从 3-9、2-6、12-20 等

3 9
2 6
12 20

我如何将范围从 file2 传递到 AWK 而不是使用 if 语句手动输入范围。如何在 AWK 中读取多个文件?

最佳答案

另一种你可以试试:

awk '
NR==FNR{
A[$1]=$2
next
}
{
t=0
for(i in A) if(i>=$1 && i<=$2) t+=A[i]
print t
}
' file rangefile

或者在一行中:

awk 'NR==FNR{A[$1]=$2; next}{t=0; for(i in A) if(i>=$1 && i<=$2) t+=A[i]; print t}' file rangefile

关于linux - 在 AWK 中读取两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15033481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com