Linuxソートの2番目の列

Linuxソートの2番目の列

2番目の列を最後の列でソートする方法を知りたいです。数字の前には「days=」という単語が付いています。 awk '{print $(NF-1)}' を使用して列を取得できますが、順序が正しくありません。

    457000      (test2) && (SGD||RMB||HKD||YEN)    days=5000    71
    37622 (this is || test1)&&(SGD||HKD||RMB) days=630 40010 
    43944 (this is)&&(SGD||HKD) days=80 102732 
    79378 (this is||test2)&&(HKD||RMB)   days=800 205425 

私が探している結果は

    43944 (this is)&&(SGD||HKD) days=80 102732 
    37622 (this is || test1)&&(SGD||HKD||RMB) days=630 40010 
    79378 (this is||test2)&&(HKD||RMB) days=800 205425
    457000      (test2) && (SGD||RMB||HKD||YEN)    days=5000    71

答え1

少しハッキーですが動作するはずです。

awk '{print substr($(NF-1), 6), $0}' file | sort -g | cut -d' ' -f2-

前の2番目の列(removed days=)をコピーし、数値順に並べ替えてから、最初の列(最後から2番目の列をコピー)を削除します。

関連情報