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
  • 相关阅读:
    ExtJs 4 的filefield上传后 返回值success接受不正常
    winform treeview 通过节点名称添加子节点
    Live Writer Test
    mysqlcluster笔记
    ExtJS中form提交之后获取返回的json值
    MYSQL大小写(由于数据由windows迁移到Linux导致)
    ORACLE分科目统计每科前三名的学生的语句
    一列数据横排显示
    Oracle11g使用exp导出空表
    myeclipse2015卸载、安装、破解全过程-----myeclipse2015
  • 原文地址:https://www.cnblogs.com/tjxwg/p/2954062.html
Copyright © 2011-2022 走看看