在awk中查找范围内的元素

巴波尔斯

我有两个文件,一个文件中有整数,另一个文件有范围。有整数的那个:

integer.txt -->

A 68 V K 99187
A 98 J K 99107
A 78 V K 99188
1 89 V C 88373
2 99 C F 88999
3 100 C H 88744
X 101 E J 88779

ranges.txt --> 

A 28 78 YELLOW
1 33 89 BLUE
2 46 111 PURPLE
X 77 199 BLACK
X 101 299 GREEN
X 102 397 RED

我想有是,如果first columninteger.txtrange.txt是一样的,让这适合在之间的整数column 2nd3rdrange的`ranges.txt。),即使它是在边界重叠(=小,等于和大和等于 )。

我尝试过的是:

awk '
    NR == FNR {intt[$1]=$2; max[$1]=$3; next}
    {
        for (color in intt) 
            if (intt[color] < $2 && intt[color] == $2 && $2 < max[color] && $2 == max[color] ) {
                print $0, color
                break
            }
    }
'

我期望的是:

A 28 78   YELLOW  A 68 V K 99187
A 28 78   YELLOW  A 78 V K 99188
1 33 89   BLUE    1 89 V C 88373 
2 46 111  PURPLE  2 99 C F 88999
X 77 199  BLACK   X 101 E J 88779
X 101 299 GREEN   X 101 E J 88779

在预期的输出中,我不希望看到X 102 397 RED任何以开头的行都X不会介于102 and 397..

我知道我的代码现在处于可怕的状态,但我该如何修复它?

埃德·莫顿

使用用于多维数组的 GNU awk:

$ cat tst.awk
{ key = $1 }
NR==FNR {
    color = $4
    beg[key][color] = $2
    end[key][color] = $3
    all[key][color] = $0
    next
}
key in all {
    for (color in all[key]) {
        if ( ($2 >= beg[key][color]) && ($2 <= end[key][color]) ) {
            print all[key][color], $0
        }
    }
}

$ gawk -f tst.awk ranges.txt integer.txt
A 28 78 YELLOW A 68 V K 99187
A 28 78 YELLOW A 78 V K 99188
1 33 89 BLUE 1 89 V C 88373
2 46 111 PURPLE 2 99 C F 88999
X 101 299 GREEN X 101 E J 88779
X 77 199 BLACK X 101 E J 88779

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找数组中给定范围内的元素数

来自分类Dev

删除范围内的列表中的元素

来自分类Dev

在基于for循环的范围内具有连续存储的序列中查找元素的位置

来自分类Dev

查找列表中元素在另一个列表中特定范围内的位置

来自分类Dev

R +查找算法以匹配相同元素范围内的值

来自分类Dev

查找范围内元素数量的最快方法

来自分类Dev

查找范围内的序列

来自分类Dev

查找日期在范围内

来自分类Dev

查找范围内的值

来自分类Dev

从特定范围内的号码列表中查找可用号码

来自分类Dev

从给定范围内的数组中查找峰值

来自分类Dev

在python中查找指定范围内图像像素的坐标

来自分类Dev

在时间范围内弹性查找记录组中的文本

来自分类Dev

从给定范围内的数组中查找峰值

来自分类Dev

在python中查找指定范围内的图像像素坐标

来自分类Dev

在句子范围内查找单词范围

来自分类Dev

在给定范围内的未排序数组中查找最大元素[是否允许预处理]?

来自分类Dev

Python:在迭代列表时从列表中删除元素,以及在范围内查找值的最有效方法

来自分类Dev

在Swift中推进范围内的所有元素?

来自分类Dev

在元素周围的范围内替换列表中的值

来自分类Dev

确定范围内的元素放置在连续内存中

来自分类Dev

增加特定范围内数组中每个元素的值

来自分类Dev

在范围内使用索引键awk

来自分类Dev

Scala查找范围内的缺失值

来自分类Dev

在彩色范围内查找中位数

来自分类Dev

查找范围内大于x的数字

来自分类Dev

查找日期范围内的可用日期

来自分类Dev

球拍-查找范围内最大的素数

来自分类Dev

查找值是否在范围内

Related 相关文章

热门标签

归档