• linux(centos8):用sort对文本内容排序


    一,sort的用途 

    1,作用:

    sort命令用于将文本文件内容加以排序。

    它能够以行为单位来排序

    2,sort常与uniq搭配使用,原因:

         用uniq命令去重时,

         需要相同的每行位置相邻才能生效,

         所以通常要在uniq之前先用sort做排序 

         而在uniq做统计之后,通常也会根据重复次数做排序,

        这种情况下也会用到uniq

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

    说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,查看sort命令所属的包

    [root@blog ~]$ whereis sort
    sort: /bin/sort /usr/share/man/man1p/sort.1p.gz /usr/share/man/man3/sort.3pm.gz /usr/share/man/man1/sort.1.gz
    
    [root@blog ~]$ rpm -qf /bin/sort
    coreutils-8.4-31.el6_5.2.x86_64

    如果提示找不到命令或命令被误删除,

    可以用dnf安装

    [root@blog ~]$ dnf install coreutils

    三,查看sort命令的版本和帮助

    1,查看版本

    [root@loadserver ~]$ sort --version
    sort (GNU coreutils) 8.4
    Copyright (C) 2010 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Written by Mike Haertel and Paul Eggert.

    2,查看帮助

    [root@loadserver ~]$ sort --help

    3,查看手册 

    [root@loadserver ~]$ man sort

    四,sort命令在运维工作中的例子

    1,统计404的url

    #-n: --numeric-sort    按照数字的值进行比较

    #-k:--key=POS1[,POS2]     start a key at POS1 (origin 1), end it at POS2

            按指定的列做排序

    #-r:--reverse    反序排列

    [root@blog nginxlogs]$ awk '$9==404{print $7}' ilc_ssl.access.log | sort | uniq -c | sort -k1 -nr
         73 /robots.txt
         37 /apple-touch-icon.png
         ...

    2,统计404的ip的出现次数

    [root@blog nginxlogs]$ awk '$9==404{print $1}' ilc_ssl.access.log | sort | uniq -c | sort -k1 -nr
         10 61.152.68.150
          9 156.229.7.2
            ...

    3,对系统中的用户按uid做倒序排列:

    #-t:指定排序用的字段的分隔符

    [root@blog ~]$ sort -t ":" -k 3 -nr /etc/passwd

    4,对排序结果去重

    例子:打印所有引发404的ip,按ip排序并去除重复

    #-u: 去除重复

    [root@blog nginxlogs]$ awk '$9==404{print $1}' ilc_ssl.access.log | sort -t ' ' -u 

    说明:sort的去重不具备uniq统计次数的功能

    5,按两个字段做排序:

    -k7   : 按第七列正序排列

    -k3nr :按第三列以数值倒序排列

    [root@blog ~]# sort -t: -k7 -k3nr /etc/passwd

    6,按指定的字符做排序:

    按第一列的第1个到第3个字符做排序

    [root@blog ~]# sort -t: -k1.1,1.3 /etc/passwd

    六,查看centos的版本

    [root@blog ~]$ cat /etc/redhat-release
    CentOS Linux release 8.0.1905 (Core) 
  • 相关阅读:
    BZOJ4503 两个串
    【挖坟】HDU3205 Factorization
    webpack打包 The 'mode' option has not been set, webpack will fallback to
    echarts js报错 Cannot read property 'getAttribute' of null
    微信支付 get_brand_wcpay_request fail,Undefined variable: openid
    layui动态设置checbox选中状态
    layui 获取radio单选框选中的值
    js 获取数组最后一个元素
    js生成指定范围内的随机数
    layer重复弹出(layui弹层同时存在多个)的解决方法
  • 原文地址:https://www.cnblogs.com/architectforest/p/12921979.html
Copyright © 2020-2023  润新知