Linux 对倒数第二列进行排序

Linux 对倒数第二列进行排序

我想知道如何对倒数第二列进行排序?数字前面有“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

有点 hacky,但它应该可以工作:

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

它复制前面的倒数第二列(删除days=),按数字排序,然后删除第一列(复制的倒数第二列)。

相关内容