默认只对相邻的相同行去重只有一个参数最常用一般和sort命令配合使用用来统计重复行的次数。
NAME uniq- report or omit repeated lines SYNOPSIS uniq[OPTION]... [INPUT [OUTPUT]] 常用参数 -c, --count #统计次数会把重复出现行的次数统计好打印到每一行的前面
cat >chen.txt<<EOF 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 EOF
sort命令可以排序
uniq命令可以报告重复行的次数-c参数搞定。
sortchen.txt|uniq -c
[root@m01 ~]# uniq chen.txt 10.0.0.9 10.0.0.8 10.0.0.7 10.0.0.8 10.0.0.9
[root@m01 ~]# sort chen.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 10.0.0.9
[root@m01 ~]# sortchen.txt|uniq -c #count 210.0.0.7 310.0.0.8 210.0.0.9
~两条命令的效果是一样的
[root@m01 ~]# sort chen.txt |uniq 10.0.0.7 10.0.0.8 10.0.0.9 [root@m01 ~]# sort -u chen.txt # unique 10.0.0.7 10.0.0.8 10.0.0.9
cat >chen.log<<EOF http://www.oldboyedu.com/ http://edu.51cto.com/ http://edu.51cto.com/user/user_id-8804946.html http://www.zhibo8.cc/ http://weibo.com/1995418821/profile?topnav=1&wvr=6 http://chenfage.blog.51cto.com/ http://edu.51cto.com/user/user_id-8804946.html http://www.oldboyedu.com/ http://www.zhibo8.cc/ http://www.zhibo8.cc/ EOF
awk取出域名
sort可以排序默认是升序
uniq统计重复行的次数
awk -F /‘{print $3}‘ chen.log |sort|uniq -c|sort -r
[root@m01 ~]# awk -F / ‘{print $3}‘ chen.log |sort chenfage.blog.51cto.com edu.51cto.com edu.51cto.com edu.51cto.com weibo.com www.oldboyedu.com www.oldboyedu.com www.zhibo8.cc www.zhibo8.cc www.zhibo8.cc
[root@m01 ~]# awk -F / ‘{print $3}‘ chen.log|sort|uniq -c 1chenfage.blog.51cto.com 3edu.51cto.com 1weibo.com 2www.oldboyedu.com 3www.zhibo8.cc
[root@m01 ~]# awk -F / ‘{print $3}‘ chen.log|sort|uniq -c|sort 1chenfage.blog.51cto.com 1weibo.com 2www.oldboyedu.com 3edu.51cto.com 3www.zhibo8.cc [root@m01 ~]# awk -F / ‘{print $3}‘ chen.log|sort|uniq -c|sort -r # reverse 3www.zhibo8.cc 3edu.51cto.com 2www.oldboyedu.com 1weibo.com 1chenfage.blog.51cto.com [root@m01 ~]# awk -F / ‘{print $3}‘ chen.log|sort|uniq -c|sort -r|head -2 3www.zhibo8.cc 3edu.51cto.com
cut指定分隔符来切割-d
sort排序可以逆序
uniq统计相重复行的次数
cut -d/-f3 chen.log|sort|uniq -c|sort -r
[root@m01 ~]# cut -d/ -f3 chen.log #-d, --delimiter(分隔符)-f, --fields(域) www.oldboyedu.com edu.51cto.com edu.51cto.com www.zhibo8.cc weibo.com chenfage.blog.51cto.com edu.51cto.com www.oldboyedu.com www.zhibo8.cc www.zhibo8.cc
[root@m01 ~]# cut -d/ -f3 chen.log|sort chenfage.blog.51cto.com edu.51cto.com edu.51cto.com edu.51cto.com weibo.com www.oldboyedu.com www.oldboyedu.com www.zhibo8.cc www.zhibo8.cc www.zhibo8.cc [root@m01 ~]# cut -d/ -f3 chen.log|sort|uniq -c 1chenfage.blog.51cto.com 3edu.51cto.com 1weibo.com 2www.oldboyedu.com 3www.zhibo8.cc [root@m01 ~]# cut -d/ -f3 chen.log|sort|uniq-c|sort -r 3www.zhibo8.cc 3edu.51cto.com 2www.oldboyedu.com 1weibo.com 1chenfage.blog.51cto.com [root@m01 ~]# cut -d/ -f3 chen.log|sort|uniq-c|sort -r|head -2 3www.zhibo8.cc 3edu.51cto.com
以行为单位对文件进行排序。
NAME sort -sort lines of text files #给文本文件的行排序 SYNOPSIS sort[OPTION]... [FILE]... 常用参数 -r,--reverse #序列默认是升序 -u,--unique #相同的行只输出一行 -k,--key=POS1[,POS2] #指定第几列或第几列的第几个字符 -t,--field-separator=SEP #指定分隔符默认是空格 -n,--numeric-sort #根据字符串的数值进行排序
cat >chen.txt<<EOF 192.168.3.1 c 192.168.3.2 n 192.168.12.41 w 192.168.2.20 g 192.168.3.3 a 192.168.2.22 p 192.168.0.152 l 192.168.22.33 u 192.168.1.10 f 192.168.0.150 y 192.168.2.20 e 192.168.30.2 t EOF
-t指定分隔符
-k指定以第几列为标准
-r逆序
sort-t" " -rk2 chen.txt
[root@m01 ~]# sort -t" " -k2 chen.txt # -t指定分隔符为空格,-k指定第几列 192.168.3.1 c 192.168.2.20 e 192.168.1.10 f 192.168.2.20 g 192.168.0.152 l 192.168.3.2 n 192.168.2.22 p 192.168.30.2 t 192.168.22.33 u 192.168.12.41 w 192.168.0.150 y [root@m01 ~]# sort -k2 chen.txt #分隔符默认就是空格 192.168.3.3 a 192.168.3.1 c 192.168.2.20 e 192.168.1.10 f 192.168.2.20 g 192.168.0.152 l 192.168.3.2 n 192.168.2.22 p 192.168.30.2 t 192.168.22.33 u 192.168.12.41 w 192.168.0.150 y [root@m01 ~]# sort -rk2 chen.txt # -r代表逆序(默认是升序)【sort -t"" -rk2 chen.txt】 192.168.0.150 y 192.168.12.41 w 192.168.22.33 u 192.168.30.2 t 192.168.2.22 p 192.168.3.2 n 192.168.0.152 l 192.168.2.20 g 192.168.1.10 f
cat >arp.txt<<EOF 192.168.3.1 00:50:56:C0:00:08 192.168.3.2 00:0C:29:FD:28:FD 192.168.12.41 00:0C:29:21:26:C7 192.168.2.20 00:50:56:27:78:CA 192.168.3.3 00:50:56:29:C4:6B 192.168.2.22 00:40:56:20:6E:AE 192.168.0.152 00:50:56:2E:4A:17 192.168.22.33 00:0C:29:61:1C:36 192.168.1.10 00:40:56:36:BC:B7 192.168.0.150 00:50:56:30:C3:8B 192.168.2.20 01:50:56:C0:00:04 192.168.30.2 00:50:56:23:68:FB EOF
默认按整行排序
-t指定分隔符
-k 1,1用逗号来分隔字段表示第一个字段开始排序到第一个字段结束
-k 1.1,3.3用点分隔字符表示第一个字段的第一个字符开始排序到第三个字段的第三个字符结束
sort -t.-k3.1,3.2n -k4.1,4.3rn arp.txt
[root@m01 ~]# sort -t. -k3.1,3.2n -k4.1,4.3rnarp.txt # -t指定分隔符是点 # -k3.1,3.2n表示第三个字段的第一个字符开始排序到第二个字符结束因为第三个字段只有两位数最后的一个n代表根据字符串的值来排序一定要加上 # -k4.1,4.3rn表示第四个字段的第一个字符开始排序到第三个字符结束-r代表逆序排序 192.168.0.152 00:50:56:2E:4A:17 192.168.0.150 00:50:56:30:C3:8B 192.168.1.10 00:40:56:36:BC:B7 192.168.2.22 00:40:56:20:6E:AE 192.168.2.20 00:50:56:27:78:CA 192.168.2.20 01:50:56:C0:00:04 192.168.3.3 00:50:56:29:C4:6B 192.168.3.2 00:0C:29:FD:28:FD 192.168.3.1 00:50:56:C0:00:08 192.168.12.41 00:0C:29:21:26:C7 192.168.22.33 00:0C:29:61:1C:36 192.168.30.2 00:50:56:23:68:FB
本文出自 “陈发哥007” 博客,请务必保留此出处http://chenfage.blog.51cto.com/8804946/1833496
原文地址:http://chenfage.blog.51cto.com/8804946/1833496