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.txt
high
if(NR==1) low=high
high
low
if
print $0