zoukankan      html  css  js  c++  java
  • 用实例来说明linux命令sort的用法

    sort常用参数的介绍就省略了,直接man sort就OK了......

    这里主要通过实际问题来介绍(通常用于分析日志)

    先介绍2个选项:

    1.-k选项指定排序字段的使用:-k[FStart[.CStart]][Modifier][,[FEnd[.CEnd]][Modifier]] 

    排序关键字包括所有以FStart变量指定的字段和CStart变量指定的列开头的及以FEnd变量指定的字段和CEnd变量指定的列结束的字符,缺省值为:FStart行开头,CStart字段第一列,FEnd行结束,CEnd字段最后一列

    例如:-k3.2,4.4  指从第3个字段的第2个字符开始比较,一直比到第4个字段的第4个字符

    2.-t选项选择字段分隔符

    测试数据如下:

    # cat data 
    apple:234
    apple:623
    banana:234
    apple:72
    apple:123
    pear:9
    banana:92

    一.以":"作为分隔符,对第一列进行升序排序

    # sort -t ':' -k1,1 data
    apple:123
    apple:234
    apple:623
    apple:72
    banana:234
    banana:92
    pear:9

    注:默认是升序排序,貌似在对第一列排序的基础上也对第二列进行了排序,等价于# sort -t ':' -k1 data

    二.以":"作为分隔符,先对第一列进行升序排序,而对第二列进行降序排序(以整数类型进行比较)

    # sort -t ':' -k1,1 -k2,2nr data
    apple:623
    apple:234
    apple:123
    apple:72
    banana:234
    banana:92
    pear:9

    三.以":"作为分隔符,对第一列进行升序排序,并对第一列进行去重

    # sort -t ':' -k1,1 -u data
    apple:234
    banana:234
    pear:9

    注:通过与cat data的结果进行对比可知:默认是在第一列相同的所有行中仅保留未排序状态下的第一行

    四.以":"作为分隔符,对第一列进行升序排序,并对第一列进行去重,去重的规则是在第一列相同的所有行中保留第二列值最大的行

    # sort -t ':' -k1,1 -k 2,2nr data | sort -t ':' -k1,1 -u
    apple:623
    banana:234
    pear:9

    其实也可以使用awk:# sort -t ':' -k1,1 -k 2,2nr data | awk 'BEGIN{FS=":"} !a[$1]++',注意这里需要使用BEGIN,明白awk的处理过程后不难理解这里为何要加上BEGIN

    五.先排序,然后以":"作为分隔符对第一列去重后并统计,并按照统计的计数进行排序

    # sort -t ':' -k1,1 data | awk 'BEGIN{FS=":"} {print $1}' | uniq -c | sort -n
    1 pear
    2 banana
    4 apple

  • 相关阅读:
    简单的2D变形 CSS transform transition
    利用文字阴影实现火焰字
    图片拖拽的继承,引用 3
    图片拖拽的继承,引用 2
    图片拖拽的继承,引用 1 (需要引入2,3两个js才能运行)
    GNU make
    GDB
    1.GCC程序编译
    设计模式之装饰者模式
    设计模式之观察者模式
  • 原文地址:https://www.cnblogs.com/stubborn412/p/2253071.html
Copyright © 2011-2022 走看看