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
  • 相关阅读:
    c++,模板函数的定义和使用【初探】
    c++,内联成员函数
    C++,对象成员的访问
    c++,public/protected/private权限修饰符
    c++,static 静态成员变量 / 静态成员函数
    C++,对象的 =赋值 以及 复制构造函数赋值
    Android 的提权(root)原理【转】
    高通LCD的pwm背光驱动
    IP地址的分类——a,b,c 类是如何划分的【转】
    Android分区
  • 原文地址:https://www.cnblogs.com/tjxwg/p/2954062.html
Copyright © 2011-2022 走看看