您的位置:68399皇家赌场 > 域名注册 > 巧用Linux命令完毕总计排序功用

巧用Linux命令完毕总计排序功用

发布时间:2019-07-14 05:50编辑:域名注册浏览(74)

    前天遭受贰个主题素材:现在有二万多条记下,在这之中积攒重复的笔录,每条记下占一行,问什么从那个记录中找到数量排行前10的记录?

    Linuxsortuniqawkhead实现访问日志总结排序功能

    作者们付出时候平日会总计一些访谈日志,访问日志中的url是海量的,并且好些个是再度内容。以url为例,计算url中冒出频率次数前5的url,并按出现次数的降序排序。

    linux命令:cat url.log | sort | uniq -c |sort -n -r -k 1 -t ' ' | awk -F '//' '{print $2}'

    今天来所有人家剖判这么些命令组合的意思。

    0)访问日志样例

    68399皇家赌场 1

     

    1) **cat t1.log**

    68399皇家赌场 2

    表示对data文件中的内容开始展览排序。sort命令是对于每一行的剧情听说字典序(ASCII码)进行排序,那样能够确认保障再也的记录时左近的。

     

    2) cat t1.log | sort | uniq -c

    68399皇家赌场 3

    这里,通过管道(|)将左边手部分的一声令下的输出作为左边部分的输入。uniq -c 表示合併相邻的重复记录,并总括重复数。因为uniq -c 只会联合相邻的记录,所以在选取该命令以前必要先排序。

    3) cat t1.log | sort | uniq -c | sort -k 1 -n -r

    68399皇家赌场 4

    因而uniq -c 管理今后的数额格式形如"2 data",第二个字段是数字,表示重复的记录数;第二个字段为记录的剧情。我们将对此内容展开排序。sort -k 1表示对此每行的首先个字段进行排序,这里即指代表重复记录数的老大字段。因为sort命令的默许排序是安份守己ASCII,这就能招致按从大到小进行排序时,数值2会排在数值11的前边,所以要求利用-n 参数钦定sort命令依据数值大小进行排序。-r 表示逆序,即依据从大到小的一一实行排序。

     

    4) **cat t1.log | sort | uniq -c | sort -k 1 -n -r | awk -F '//' '{print $2}'**

    68399皇家赌场 5

    因而sort data | uniq -c | sort -k 1 -n -r 管理后的文件是 那样的格式,大家供给的结果是192.168.1.100这么的格式,须要去掉 -F '//' 是将 http:// 和 192.168.1.100,{print $2}的效能是取数组的第二有个别,即192.168.1.100

     

    5) **cat t1.log | sort | uniq -c | sort -k 1 -n -r | awk -F '//' '{print $2}'| head -5**

    68399皇家赌场 6

    head 命令表示选择文本的前x行。通过head -5 就足以取得排序结果中前五行的剧情。

    6)上面 如:/Get /auth, 大家得以通过awk -F 可能cut -k 命令来截取url。实际情况参见awk、cut 命令使用方法。

    大家付出时候平日会总括一些访谈日志,访问日志中的url是海量的,而且多数是再一次内容。以...

    Linux基本操作-----文件的排序 分割 合併 归档等

    uniq

    uniq命令: 

    uniq不加参数,只对左近的平等行内容去重。

    事举个例子下: 

    [root@localhost ~]# pwd

    /root

    [root@localhost ~]# cat oldboy.txt

    10.0.0.9

    10.0.0.8

    10.0.0.7

    10.0.0.7

    10.0.0.8

    10.0.0.8

    10.0.0.9 

    [root@localhost ~]# uniq oldboy.txt

    10.0.0.9

    10.0.0.8

    10.0.0.7

    10.0.0.8

    10.0.0.9 

     

    sort 命令:排序的授命

    sort一声令下不加参数,会把重复的行相邻。

    事举例下:

    [root@localhost ~]# pwd

    /root

    [root@localhost ~]# cat oldboy.txt

    10.0.0.9

    10.0.0.8

    10.0.0.7

    10.0.0.7

    10.0.0.8

    10.0.0.8

    10.0.0.9

    [root@localhost ~]# sort oldboy.txt

    10.0.0.7

    10.0.0.7

    10.0.0.8

    10.0.0.8

    10.0.0.8

    10.0.0.9

     

    对oldboy.txt文件举办删减一样的行内容:

    法1:sort协作uniq去除重复的行。

    [root@localhost ~]# sort oldboy.txt |uniq

    10.0.0.7

    10.0.0.8

    10.0.0.9

     

    法二: sort –u filename  -u去除重复的行。

    [root@localhost ~]# sort -u oldboy.txt

    10.0.0.7

    10.0.0.8

    10.0.0.9 

     

    uniq –c filename  -c总括重复的行的内容的行(次)数,即去重计数。

    事比方下:

    [root@localhost ~]# cat oldboy.txt

    10.0.0.9

    10.0.0.8

    10.0.0.7

    10.0.0.7

    10.0.0.8

    10.0.0.8

    10.0.0.9

    [root@localhost ~]# sort oldboy.txt |uniq -c

          2 10.0.0.7

          3 10.0.0.8

          2 10.0.0.9 

    信用合作社真正案例(那一个案例比较重大):

    拍卖以下文件内容,将域名收取并依靠域名进行计数排序管理:(百度和sohu面试题)

    oldboy.log

     

    [root@localhost ~]# cat oldboy.log

     

    [root@localhost ~]# awk -F "/" '{print $3}' oldboy.log |sort |uniq -c

          1 mp3.etiantian.org

          2 post.etiantian.org

          3 www.etiantian.org

     

    倒序排序:sort  –r  filename  -r参数倒序排序(反过来排序)。

    法一:

    [root@localhost ~]# awk -F "/" '{print $3}' oldboy.log |sort |uniq -c|sort -r

          3 www.etiantian.org

          2 post.etiantian.org

          1 mp3.etiantian.org

     

    剖判:此类难题是运行工作中最广泛的标题。能够演化成深入分析日志,查看TCP种种状态连接数,查看单IP连接数排行等等。

    法二:

    [root@localhost ~]# cut -d "/" -f3 oldboy.log |sort -r|uniq -c

          3 www.etiantian.org

          2 post.etiantian.org

          1 mp3.etiantian.org

     

    对此那些标题,可以编程实现。不过在Linux遭逢下,能够回顾的经过一些指令的咬合直接达成那项职业。这里先讲自身利用的授命,再逐条剖析。

     

    sort

    sort 命令:分隔符暗许是空格。

    暗中同意依据整行排序。 

    -u:去重(去除一样内容的行)。

    -r:倒序(反过来排序),倒序平日利用。

    -n:依照数字排序。

    -t:钦点分隔符,类似AWK的-F,举个例子:-t,钦定分隔符,-k1正是分隔符之后的首先列排序。

    -k:钦赐第几列。

    -k参数用法1:

    -k 字段1,字段2 :用逗号作为分隔符,比方:-k 1,1:表示从第二个字段初叶排序,到首个字段甘休。

    -k参数用法2:

      例子:-k 1.1,3.3 :(用点分隔字符)表示第叁个字段的率先个字符初阶排序到第一个字段的第4个字符结束。 

    对第二列字符举办排序:

    [root@localhost ~]# cat oldboy.txt

    10.0.0.9 a

    10.0.0.8 k

    10.0.0.7 f

    10.0.0.7 n

    10.0.0.8 c

    10.0.0.8 z

    10.0.0.9 o

    [root@localhost ~]# sort  -k 2 oldboy.txt

    10.0.0.9 a

    10.0.0.8 c

    10.0.0.7 f

    10.0.0.8 k

    10.0.0.7 n

    10.0.0.9 o

    10.0.0.8 z 

    开始展览倒序排序:

    [root@localhost ~]# sort -rk2 oldboy.txt

    10.0.0.8 z

    10.0.0.9 o

    10.0.0.7 n

    10.0.0.8 k

    10.0.0.7 f

    68399皇家赌场,10.0.0.8 c

    10.0.0.9 a 

     

    -k:钦赐第几列。

    -k参数用法1:

    -k 字段1,字段2 :用逗号作为分隔符,举个例子:-k 1,1:表示从第贰个字段初阶排序,到第叁个字段甘休。

    -k参数用法2:

      例子:-k 1.1,3.3 :(用点分隔字符)表示第多少个字段的首先个字符开头排序到第二个字段的第七个字符截至。 

    -k参数用法1和用法2整合的例子(对IP地址降序排序)(日志日常用到此格局用法):

    [root@saltstack-client2 ~]# cat arp.txt

    192.168.3.1 00:0F:AF:81:19:DE

    192.168.3.1 00:0F:AF:81:19:49

    192.168.3.2 00:30:AF:81:19:EF

    192.168.3.3 00:40:AF:81:19:BF

    192.168.0.152 00:65:AF:81:19:AF

    192.168.0.153 00:70:AF:81:19:CF

    192.168.1.1 00:80:AF:81:19:59

    192.168.1.2 00:45:AF:81:19:GF

    192.168.2.20 00:60:AF:81:19:1F 

    [root@saltstack-client2 ~]# sort -t. -k3.1,3.1nr -k4.1,4.3nr arp.txt

    192.168.3.3 00:40:AF:81:19:BF

    192.168.3.2 00:30:AF:81:19:EF

    192.168.3.1 00:0F:AF:81:19:49

    192.168.3.1 00:0F:AF:81:19:DE

    192.168.2.20 00:60:AF:81:19:1F

    192.168.1.2 00:45:AF:81:19:GF

    192.168.1.1 00:80:AF:81:19:59

    192.168.0.153 00:70:AF:81:19:CF

    192.168.0.152 00:65:AF:81:19:AF

     

     

    专注:-t,-k一般都以在一道组成使用!sort常用的参数:-r,-n,-t,-k。

    能够选拔以下命令实现那些义务,个中有着的记录以每条一行的款式储存在data文件中。

     1 sort

    Linux代码
    $ sort data | uniq -c | sort -k 1 -n -r | head 10 

        1 sort命令将输入文件作为由多条记下组成的数据流,而记录由可变宽度的字段组成,以换行符作为定界符

    $ sort data | uniq -c | sort -k 1 -n -r | head 10

        2 sort的吩咐的中坚格式

    前几日来每家每户深入分析那些命令组合的意思。

           sort 选项 文件

    1) sort data

        3 sort命令选项及其意义

    表示对data文件中的内容开始展览排序。sort命令是对于每一行的从头到尾的经过据说字典序(ASCII码)举行排序,那样能够保障再也的记录时相近的。

           选项               意义

    2) sort data | uniq -c

           -c                   测量检验文件是还是不是已经被排序

    那边,通过管道(|)将右边手部分的授命的出口作为左侧部分的输入。uniq -c 表示合併相邻的重复记录,并总结重复数。因为uniq -c 只会联合相邻的记录,所以在运用该命令此前要求先排序。

           -k                   钦定排序的域

    3) sort data | uniq -c | sort -k 1 -n -r

           -m                  合併八个已排序的公文

    透过uniq -c 管理未来的数目格式形如"2 data",第二个字段是数字,表示重复的记录数;www.linuxidc.com第二个字段为记录的原委。我们将对此内容举办排序。sort -k 1表示对于每行的首先个字段进展排序,这里即指代表重复记录数的百般字段。因为sort命令的暗中同意排序是比照ASCII,那就能够招致按从大到小举行排序时,数值2会排在数值11的眼下,所以须要选择-n 参数钦命sort命令遵照数值大小进行排序。-r 表示逆序,即依照从大到小的一一举行排序。

           -n                   依照数字大小举行排序

    4) sort data | uniq -c | sort -k 1 -n -r | head 10

           -o 输出文件    将出口写到钦点的文本,也正是将出口重定向到内定的公文

    head 命令表示选择文本的前x行。通过head 10 就足以博得排序结果中前十行的剧情。

           -r                    将排序结果逆向突显

    本文由68399皇家赌场发布于域名注册,转载请注明出处:巧用Linux命令完毕总计排序功用

    关键词: 68399皇家赌场 脚本