• 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

  • 相关阅读:
    数据库表结构变动发邮件脚本
    .net程序打包部署
    无法登陆GitHub解决方法
    netbeans 打包生成 jar
    第一次值班
    RHEL6 纯命令行文本界面下安装桌面
    C语言中格式化输出,四舍五入类型问题
    I'm up to my ears
    How to boot ubuntu in text mode instead of graphical(X) mode
    the IP routing table under linux@school
  • 原文地址:https://www.cnblogs.com/dannylinux/p/8183065.html
Copyright © 2020-2023  润新知