根据另一个文件中的范围提取行

根据另一个文件中的范围提取行

price.txt文件有两列:(名称和值)

Mary 134
Lucy 56
Jack 88
Marissa 37
Emily 85
Antony 99

range.txt文件也有两列:(水果和价值)

apple 57
banana 62
orange 88
blueberry 98

的第二列range.txt已排序(从最小到最大)

我的目标是提取price.txt其值在文件中的值范围 (57 - 98) 内的行range.txt

预期结果如下:

Jack 88
Emily 85

我尝试使用以下代码来解决此问题,但我不知道如何选择特定列的第一行和最后一行。代码中不清楚的部分位于星号 ( **...**) 之间:

awk 'FNR == NR {value=$2; **low=??; high=??**; next} 
     {if ($2>=**low** && $2<=**high** ) print $0}' range.txt price.txt

答案1

awk 'FNR == NR {high=$2; if(NR==1) low=high; next} 
     {if ($2>=low && $2<=high ) print $0}' range.txt price.txt

当 时FNR == NR,它将读取文件,这里我们将文件range.txt的第二列分配给,并使用将第一个值分配给,然后我们可以在下一句中使用这些值。并且会打印出满足条件的行。range.txthighif(NR==1) low=highhighlowifprint $0

相关内容