zoukankan      html  css  js  c++  java
  • Sort::Fields 按分隔符排序

    语法:

      use Sort::Fields;
      @sorted = fieldsort [3, '2n'], @lines;
      @sorted = fieldsort '\+', [-1, -3, 0], @lines;
    
      $sort_3_2n = make_fieldsort [3, '2n'], @lines;
      @sorted = $sort_3_2n->(@lines);

    说明:

    Sort::Fields 自动导入两个方法:fieldsortmake_fieldsort,和两个变量stable_fieldsortmake_stable_fieldsort. make_fieldsort.

    第一个参数是被用来作为split操作的一个正则表达式,分隔符是可选的,如果没有提供使用/\s+/.

    第二个参数是一个数组引用包括一个或者多个域。默认是字符方式排序,1代表第一个域,2代表第一个域,等等。。 -2代表逆序。 数字方式排序加n。 0意味整行排序,-0意味整行逆序。

    The order in which the specifiers appear is the order in which they will be used to sort the data. The primary key is first, the secondary key is second, and so on.

    排序的顺序是第一个,第二个,等等。

    例子:

      123   asd   1.22   asdd
      32    ewq   2.32   asdd
      43    rewq  2.12   ewet
      51    erwt  34.2   ewet
      23    erww  4.21   ewet
      91    fdgs  3.43   ewet
      123   refs  3.22   asdd
      123   refs  4.32   asdd
    
      # alpha sort on column 1
      print fieldsort [1], @data;
    
      123   asd   1.22   asdd
      123   refs  3.22   asdd
      123   refs  4.32   asdd
      23    erww  4.21   ewet
      32    ewq   2.32   asdd
      43    rewq  2.12   ewet
      51    erwt  34.2   ewet
      91    fdgs  3.43   ewet
    
      # numeric sort on column 1
      print fieldsort ['1n'], @data;
    
      23    erww  4.21   ewet
      32    ewq   2.32   asdd
      43    rewq  2.12   ewet
      51    erwt  34.2   ewet
      91    fdgs  3.43   ewet
      123   asd   1.22   asdd
      123   refs  3.22   asdd
      123   refs  4.32   asdd
    
      # reverse numeric sort on column 1
      print fieldsort ['-1n'], @data;
    
      123   asd   1.22   asdd
      123   refs  3.22   asdd
      123   refs  4.32   asdd
      91    fdgs  3.43   ewet
      51    erwt  34.2   ewet
      43    rewq  2.12   ewet
      32    ewq   2.32   asdd
      23    erww  4.21   ewet
    
      # alpha sort on column 2, then alpha on entire line
      print fieldsort [2, 0], @data;
    
      123   asd   1.22   asdd
      51    erwt  34.2   ewet
      23    erww  4.21   ewet
      32    ewq   2.32   asdd
      91    fdgs  3.43   ewet
      123   refs  3.22   asdd
      123   refs  4.32   asdd
      43    rewq  2.12   ewet
    
      # alpha sort on column 4, then numeric on column 1, then reverse
      # numeric on column 3
      print fieldsort [4, '1n', '-3n'], @data;
    
      32    ewq   2.32   asdd
      123   refs  4.32   asdd
      123   refs  3.22   asdd
      123   asd   1.22   asdd
      23    erww  4.21   ewet
      43    rewq  2.12   ewet
      51    erwt  34.2   ewet
      91    fdgs  3.43   ewet
    
      # now, splitting on either literal period or whitespace
      # sort numeric on column 4 (fractional part of decimals) then
      # numeric on column 3 (whole part of decimals)
      print fieldsort '(?:\.|\s+)', ['4n', '3n'], @data;
    
      51    erwt  34.2   ewet
      43    rewq  2.12   ewet
      23    erww  4.21   ewet
      123   asd   1.22   asdd
      123   refs  3.22   asdd
      32    ewq   2.32   asdd
      123   refs  4.32   asdd
      91    fdgs  3.43   ewet
    
      # alpha sort on column 4, then numeric on the entire line
      # NOTE: produces warnings under -w
      print fieldsort [4, '0n'], @data;
    
      32    ewq   2.32   asdd
      123   asd   1.22   asdd
      123   refs  3.22   asdd
      123   refs  4.32   asdd
      23    erww  4.21   ewet
      43    rewq  2.12   ewet
      51    erwt  34.2   ewet
      91    fdgs  3.43   ewet
    
      # stable alpha sort on column 4 (maintains original relative order
      # among items that compare the same)
      print stable_fieldsort [4], @data;
    
      123   asd   1.22   asdd
      32    ewq   2.32   asdd
      123   refs  3.22   asdd
      123   refs  4.32   asdd
      43    rewq  2.12   ewet
      51    erwt  34.2   ewet
      23    erww  4.21   ewet
      91    fdgs  3.43   ewet
  • 相关阅读:
    CompletableFuture(yet)
    模拟future
    一次使用jmap评估是否可以把类似session信息挂靠在某未知框架的某暴露对象上
    只读事务与普通读
    多重分表分库一般解决方案
    mat解决oom一般方法实践
    类加载器隔离朴实案例(二)logback
    在51系列中data,idata,xdata,pdata的区别
    linux 简单的DMA例程
    disable_irq()与disable_irq_nosync()区别
  • 原文地址:https://www.cnblogs.com/tjxwg/p/2954062.html
Copyright © 2011-2022 走看看