そのため、給与情報(例:$ 2674)の列を含むファイルがあります。
indi salary
sam 2674
john 6375
max 9547
そのレベル(3列)の給与範囲(1列と2列)を含む別のファイル
salary_min salary_max Rank
2000 4000 Deputy
4000 6000 secretary
6000 8000 Assistant
8000 10000 Manager
さて、ファイル1の人々を給与に応じてそのレベルに割り当てたいと思います。
したがって、最終出力は
indi Rank
sam Deputy
john Assistant
max Manager
Linuxでは同じデータセット型を使用しますが、より大きなデータを使用してこれを達成するにはどうすればよいですか?
ベストアンサー1
給与と給与範囲が常に整数であり、給与範囲が重ならないと仮定すると、次のように機能できますbash
。
{ printf "indi Rank\n" ;
join -o1.1,2.2 <(tail -n +2 file1 | sort -b -k2,2) -1 2 -2 1 \
<(awk 'FNR > 1{for (i=$1; i<$2; ++i) printf "%d %s\n", i, $3}' file2 | sort -k1,1) ;}
indi Rank
sam Deputy
john Assistant
max Manager