web-dev-qa-db-ja.com

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
6
user11496

少しハッキーですが、うまくいくはずです:

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

先頭の最後から2番目の列を複製し(days=を削除)、数値で並べ替えてから、最初の列(複製された最後から2番目の列)を削除します。

10
Kevin