#!/bin/bash # 一条完整的记录如下: # 192.168.1.20 - - [21/Apr/2020:14:27:49 +0800] "GET /1/index.php HTTP/1.1" 404 490 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0" # 根据输出说明,是把IP去重 # 思路: 先去重IP相同的行,再规定时间,然后统计IP个数 (一开始的想法) # 新思路: 找出2020年04月23日20点至23点的行, awk只输出IP,排序,uniq去重相邻的重复行,wc计算有多少行 # uniq 可以从输入中删除重复的行。它通常与 sort 命令一起使用,因为 uniq 只能去除相邻的重复行,因此常常需要先对数据进行排序 grep '23\/Apr\/2020:2[0-3]' nowcoder.txt | awk '{print $1}' | sort | uniq | wc -l # grep '23\/Apr\/2020:2[0-3]' nowcoder.txt 找出2020年04月23日20点至23点的行 # awk '{print $1}' awk只输出IP,排序 # sort | uniq 排序,并且去重 # wc -l 计算IP个数
END