Linux 如何使awk根据文件2中的一些数字范围将文件1中的行与文件2中的行进行匹配

Linux 如何使awk根据文件2中的一些数字范围将文件1中的行与文件2中的行进行匹配,linux,awk,scripting,Linux,Awk,Scripting,我有以下两个文件: 文件1: 22 2 42 32 文件2: 1 10 valuea 11 20 valueb 21 30 valuec 31 40 valued 41 50 valuee 51 60 valuef 如何让awk从文件1中获取每个值,根据它是否在文件2的第1列和第2列中的数字范围内与文件2匹配,然后从文件2中的匹配列打印出第3列?输出类似于以下内容: valuec valuea valuee valued 根据我在本文中找到的内容,我尝试使用以下AWK命令:,但它似乎无法正

我有以下两个文件:

文件1:

22
2
42
32
文件2:

1 10 valuea
11 20 valueb
21 30 valuec
31 40 valued
41 50 valuee
51 60 valuef
如何让awk从文件1中获取每个值,根据它是否在文件2的第1列和第2列中的数字范围内与文件2匹配,然后从文件2中的匹配列打印出第3列?输出类似于以下内容:

valuec
valuea
valuee
valued
根据我在本文中找到的内容,我尝试使用以下AWK命令:,但它似乎无法正常工作

#!/bin/bash
awk 'FNR == NR { val[$1] = $1 }
     FNR != NR { if (val[$1] >= $1 && val[$1] <= $2)
                     print $3
               }' file1 file2
此外,出于明显的原因,我没有将其包含在这里,但对于该脚本的实际应用,文件1将包含大约7000个条目,而文件2将包含68000个条目


请注意,file2是第一个文件。这将涵盖多个范围的比赛以及+0将强制进行数值比较。

是否必须为awk?你会满足于使用通信吗?@louigi600是的,通信非常好好好吧,我会写下来作为回答。。。你可以把它当作有用的答案。。。这将有助于提高我的声誉
$ awk 'FNR == NR {a[$1]=$2; v[$1]=$3; next} 
                 {for(k in a) 
                      if(k+0<=$1 && $1+0<=a[k]) print v[k]}' file2 file1

valuec
valuea
valuee
valued