他のファイルの範囲に基づいて行を抽出する

他のファイルの範囲に基づいて行を抽出する

price.txtファイルには(名前と値)という2つの列があります。

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

range.txtファイルには(フルーツと値)という2つの列もあります。

apple 57
banana 62
orange 88
blueberry 98

range.txtの2番目の列はソート済み(最も小さいものから最大のものまで)

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ファイルの2番目の列を割り当て、最初の値をusingに割り当てると、次の文でその値を使用できます。そして条件に合ったラインが出力されます。range.txthighif(NR==1) low=highhighlowifprint $0

関連情報