linux命令之uniq

1.uniq介绍

linux命令uniq是用来删除经过排序后的数据的重复记录。uniq去重只能去除连续的重复行,所以一般先用sort排序,再去重统计重复的数据

2.uniq用法

uniq [参数]

uniq参数

参数

说明

-c

统计重复的数据

3.实例

3.1.统计http access.log文件中状态码

命令:

cat access.log | awk '{print $9}' | sort | uniq -c

[root@centos79 nginx]# pwd
/var/log/nginx
[root@centos79 nginx]# ls
access.log  error.log
[root@centos79 nginx]# cat access.log | awk '{print $9}' | sort | uniq -c
      4 200
      2 404
[root@centos79 nginx]#

3.2.统计http access.log文件中谁访问过网站

命令:

cat access.log | awk '{print $1}' | uniq -c | sort -nr

[root@centos79 nginx]# pwd
/var/log/nginx
[root@centos79 nginx]# ls
access.log  error.log
[root@centos79 nginx]# cat access.log | awk '{print $1}' | uniq -c | sort -nr
      6 192.168.10.1
[root@centos79 nginx]#

3.3.统计/etc/passwd中每种shell的使用情况

命令:

cat /etc/passwd | cut -d: -f 7 | uniq -c | sort -nr
 

[root@centos79 nginx]# cat /etc/passwd | cut -d: -f 7 | uniq -c | sort -nr
     36 /sbin/nologin
      4 /sbin/nologin
      4 /bin/bash
      2 /bin/bash
      1 /sbin/shutdown
      1 /sbin/nologin
      1 /sbin/halt
      1 /bin/sync
      1 /bin/bash
[root@centos79 nginx]#

3.4.统计http access.log文件中访问次数最多的前两个ip地址,以及出现次数最多的两个状态码

命令:

cat access.log |awk '{print $1,$9}' | uniq -c | sort -r | head -2

[root@cent79-2 nginx]#  cat access.log |awk '{print $1,$9}' | uniq -c | sort -r | head -2
      4 192.168.10.1 200
      2 192.168.10.1 404
[root@cent79-2 nginx]#