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