根据列重新排列文件中的行



我希望根据最后一列有一些数字重新排列此文本文件(test.txt)中的行。例如,在下面的文件中,我们看到最后一 column.so 分别看到数字 714,708,816,202,222 现在我想根据最后一列按升序重新排列整列

wwwdev.comp.Hello:443          Hello, Inc.     Valid    May 20 2018 714 
Hostname                          cert          expiry
hidev.comp.Hello:443           Hello, Inc.     Valid    May 14 2018 708 
 hidev.comp.Hello:443           Hello, Inc.     Valid   --------------                          
gtdev.Hello:443                Hello, Inc.     Valid    Aug 30 2018 816                                                                                       
wwwdev.Hello:443               Hello, Inc.     Valid    Dec 24 2016 202                                
wwwdev.Hello:443               Hello, Inc.     Valid    Dec 24 2016 222 

预期运营

   wwwdev.Hello:443               Hello, Inc.     Valid    Dec 24 2016 202 
   Hostname                          cert          expiry
    wwwdev.Hello:443               Hello, Inc.     Valid    Dec 24 2016 222 
    hidev.comp.Hello:443           Hello, Inc.     Valid   --------------  
    hidev.comp.Hello:443           Hello, Inc.     Valid    May 14 2018 708
    wwwdev.comp.Hello:443          Hello, Inc.     Valid    May 20 2018 714
    gtdev.Hello:443                Hello, Inc.     Valid    Aug 30 2018 816 

试:

 sort -k6 -n test.txt

请指教。

注意:我必须跳过没有数字的行并继续下一行。

$ sort -n -k8 file
wwwdev.Hello:443               Hello, Inc.     Valid    Dec 24 2016 202
wwwdev.Hello:443               Hello, Inc.     Valid    Dec 24 2016 222
hidev.comp.Hello:443           Hello, Inc.     Valid    May 14 2018 708
wwwdev.comp.Hello:443          Hello, Inc.     Valid    May 20 2018 714
gtdev.Hello:443                Hello, Inc.     Valid    Aug 30 2018 816  

如果您不知道有多少列,最好用awk装饰/分类/取消装饰。

$ awk '{print $NF "t" $0}' file | sort -n -k1,1 | cut -f2-

使用 GNU awk 4.* 表示sorted_in:

$ cat tst.awk
/[0-9]+s*$/ { sorted[$NF]=$0; next }
{ fixed[NR]=$0 }
END {
    PROCINFO["sorted_in"] = "@ind_num_asc"
    for (key in sorted) {
        if (++onr in fixed) {
            print fixed[onr++]
        }
        print sorted[key]
    }
}
$ awk -f tst.awk file
wwwdev.Hello:443               Hello, Inc.     Valid    Dec 24 2016 202
Hostname                          cert          expiry
wwwdev.Hello:443               Hello, Inc.     Valid    Dec 24 2016 222
 hidev.comp.Hello:443           Hello, Inc.     Valid   --------------
hidev.comp.Hello:443           Hello, Inc.     Valid    May 14 2018 708
wwwdev.comp.Hello:443          Hello, Inc.     Valid    May 20 2018 714
gtdev.Hello:443                Hello, Inc.     Valid    Aug 30 2018 816

相关内容

  • 没有找到相关文章