zoukankan      html  css  js  c++  java
  • sort和uniq的应用实例

    sort 排序 uniq 
    1、语法:
    sort [option]... [file]...

    2、选项:
    -k   key,关键子,指定以那个列来排序。如果不指定,默认将正行作为关键字排序
    -n   对数值排序。默认bash将所有列值认为是字符串类型,如果想要按照数值来排序使用-n或者修饰符n
    -r   倒序排序
    -t   指定列的分隔符,默认空格或这tab(制表符)

    -k: 指定排序关键字
    语法:-k pos1,pos2 -k 3,3 pos1 起始列 pos2结束列
    -k 3 定义起始列为第三列,如果第三列相同,则按照第4列排序,以此类推,对比完所有列一样的话,判定两行是相同的
    如果,要指定以第三列来排序,写: -k 3,3

    根据指定的字符来排序:
    语法: -k pos1.start pos2.end
    [root@localhost html]# cat /var/log/httpd/access_log.2017-08-28 | sort -k 4.14,4.15(第四列的第14个字符到第四列的第15个字符)


    -n: 数值排序
    [root@localhost html]# sort -n -k 3,3 sort.txt
    The_Hill KL 63 2972
    Alien HK 119 1982
    Boys_in_Company_C HK 239 2192
    Toy_story HK 239 3927
    Star_Wars HK 301 4102
    A_Few_Good_Men KL 445 5851
    Aliens HK 532 4892


    [root@localhost html]# sort -k 3,3n sort.txt   //n修饰符  ,按数字排列 等同于 -n
    The_Hill KL 63 2972
    Alien HK 119 1982
    Boys_in_Company_C HK 239 2192
    Toy_story HK 239 3927
    Star_Wars HK 301 4102
    A_Few_Good_Men KL 445 5851
    Aliens HK 532 4892


    -r 倒序排序

    [root@localhost html]# sort -k 3,3nr sort.txt  //等同于-n -r ,按数字倒叙排列
    Aliens HK 532 4892
    A_Few_Good_Men KL 445 5851
    Star_Wars HK 301 4102
    Boys_in_Company_C HK 239 2192
    Toy_story HK 239 3927
    Alien HK 119 1982
    The_Hill KL 63 2972


    [root@localhost html]# sort -n -r -k 3,3 sort.txt
    Aliens HK 532 4892
    A_Few_Good_Men KL 445 5851
    Star_Wars HK 301 4102
    Toy_story HK 239 3927
    Boys_in_Company_C HK 239 2192
    Alien HK 119 1982
    The_Hill KL 63 2972

    -t 指定列的分割符号
    [root@localhost html]# sort -t ':' -k 3,3n /etc/passwd //分隔符为“:” n数值排序 -k指定排序关键字


    -u 去除重复的行

    [root@localhost html]# cat sort.txt |sort
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    Alien HK 119 1982
    Aliens HK 532 4892
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Star_Wars HK 301 4102
    The_Hill KL 63 2972
    Toy_story HK 239 3927


    [root@localhost html]# cat sort.txt |sort -u
    A_Few_Good_Men KL 445 5851
    Alien HK 119 1982
    Aliens HK 532 4892
    Boys_in_Company_C HK 239 2192
    Star_Wars HK 301 4102
    The_Hill KL 63 2972
    Toy_story HK 239 3927

    uniq(不加任何选项)就等于sort -u 去除相邻的重复的行
    [root@localhost html]# cat sort.txt
    Toy_story HK 239 3927
    The_Hill KL 63 2972
    Star_Wars HK 301 4102
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Aliens HK 532 4892
    Alien HK 119 1982
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    [root@localhost html]# cat sort.txt |uniq
    Toy_story HK 239 3927
    The_Hill KL 63 2972
    Star_Wars HK 301 4102
    Boys_in_Company_C HK 239 2192
    Aliens HK 532 4892
    Alien HK 119 1982
    A_Few_Good_Men KL 445 5851

    uniq只能去除相邻的重复的行:
    [root@localhost html]# cat sort.txt
    Toy_story HK 239 3927
    The_Hill KL 63 2972
    Star_Wars HK 301 4102
    Boys_in_Company_C HK 239 2192
    Aliens HK 532 4892
    Boys_in_Company_C HK 239 2192
    A_Few_Good_Men KL 445 5851
    Alien HK 119 1982
    A_Few_Good_Men KL 445 5851
    [root@localhost html]# cat sort.txt |uniq
    Toy_story HK 239 3927
    The_Hill KL 63 2972
    Star_Wars HK 301 4102
    Boys_in_Company_C HK 239 2192
    Aliens HK 532 4892
    Boys_in_Company_C HK 239 2192
    A_Few_Good_Men KL 445 5851
    Alien HK 119 1982
    A_Few_Good_Men KL 445 5851


    -c count 计数 计算相邻的行的数量,通常先用sort将文本行进行排序(让相同的即重复的行相邻),然后在用uniq -c计算每行出现的重复次数

    [root@localhost html]# cat sort.txt |sort
    A_Few_Good_Men KL 445 5851
    A_Few_Good_Men KL 445 5851
    Alien HK 119 1982
    Aliens HK 532 4892
    Boys_in_Company_C HK 239 2192
    Boys_in_Company_C HK 239 2192
    Star_Wars HK 301 4102
    The_Hill KL 63 2972
    Toy_story HK 239 3927


    [root@localhost html]# cat sort.txt |sort|uniq -c
    2 A_Few_Good_Men KL 445 5851
    1 Alien HK 119 1982
    1 Aliens HK 532 4892
    2 Boys_in_Company_C HK 239 2192
    1 Star_Wars HK 301 4102
    1 The_Hill KL 63 2972
    1 Toy_story HK 239 3927


    统计Apache每秒钟的并发量
    [root@localhost html]# cat /var/log/httpd/access_log.2017-08-28 | sort -t ' ' -n -k 4.20,4.21 |uniq -c


    倒叙输出每秒钟的日志访问量
    [root@localhost html]# cat /var/log/httpd/access_log.2017-08-28 | sort |uniq -c|sort -r |head -3

  • 相关阅读:
    算法与数据结构基础
    算法与数据结构基础
    算法与数据结构基础
    分布式系统理论进阶
    分布式系统理论进阶
    分布式系统理论基础
    分布式系统理论进阶
    分布式系统理论基础
    dht 分布式hash 一致性hash区别
    排期模板
  • 原文地址:https://www.cnblogs.com/dannylinux/p/8183065.html
Copyright © 2011-2022 走看看