列の数と対応する単位の並べ替え

列の数と対応する単位の並べ替え

次のリストがあります。

1,kg,cat
1000,g,dog
20,g,apple

重量順に並べ替えたいです。 1kgと1000gは同じなので重さごとに揃えたいです。私のデータセットは大きく、単位が異なり、コードが3000gが1kgより大きいことを認識できるようにソートする方法を知りたいです。

ベストアンサー1

ファイルが大きすぎてメモリに収まらない場合は、次のことができます。

$ awk -F, -v OFS="," '$2=="kg"{$1=1000*$1}1;' file | sort -n | 
    awk -F, -v OFS="," '$2=="kg"{$1=$1/1000}1;'
1000,g,dog
1,kg,cat
20,g,apple

おすすめ記事