列出第二列中所有值小于 30 的第一列编号

列出第二列中所有值小于 30 的第一列编号

我的测试文件是

1599027 48.5
1599027 29.7
1599028 49.9
1599028 19.4
1599029 49.5
1599026 19.2
1599026 19.2

由此我需要从第一列获取数字,该数字在所有代表行中第二列值应<30。在上面的测试文件中,只有一个数字“1599026”符合上述条件(列出的行都是19.2 < 30)。第一列中的另外两个数字在其中一行中有 >30。

答案1

$ awk '{ sum[$1] += ($2 >= 30) } END { for (i in sum) if (!sum[i]) print i }' file
1599026

这用于awk为名为 的文件中数据第一列中的每个唯一数字创建总和file。数字的总和是第二列的值大于或等于 30 的次数。

在代码的末尾awk,在END块中,打印所有总和为零的数字。

相关内容