使用shell脚本统计文件中ip出现的次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用shell脚本统计文件中ip出现的次数相关的知识,希望对你有一定的参考价值。
参考技术A 首先准备文件demo.txt,内容如下:1 192.168.41.20
2 192.168.41.21
3 192.168.41.22
3 192.168.41.22
6 192.168.41.25
3 192.168.41.22
3 192.168.41.22
4 192.168.41.23
5 192.168.41.24
5 192.168.41.24
5 192.168.41.24
6 192.168.41.25
1 192.168.41.20
1 192.168.41.20
统计出现次数最多的ip次数:
cat demo.txt | awk 'print $2' | sort | uniq -c | sort -n -r | head -n 1
注:
awk ' print $2':取数据的第2域(第2列),第一列是标号(1,2,3...),第二列是ip地址
sort:对IP部分进行排序。
uniq -c:打印每一重复行出现的次数。(并去掉重复行)
sort -n -r:按照重复行出现的次序倒序排列。
head -n 1:取排在第一位的ip地址
https://blog.csdn.net/xiamoyanyulrq/article/details/81570652
shell编程练习
1.遍历指定目录下的所有文件和文件夹
2.有一个Ip文件,每一个ip占一行,找出出现次数最多的前三个ip
sort ip.txt | uniq -c | sort -rn | head -3
uniq命令:用于删除或统计重复行,要和sort命令结合使用
3.有一个Ip文件,每一个ip占一行,找出出现次数超过3次的ip
4.有两个文件分别写有许多ip,1.txt,2.txt,每行一个ip,ip可能会重复出现
(1)分别求出每个ip文件的ip数(不同的ip数)
sort -u 1.txt | wc -l
sort -u 2.txt | wc -l
(2)求出两个文件的ip数(不同的ip数)
sort -u 1.txt 2.txt | wc -l
(3)出现在1.txt却没有出现在2.txt的ip
sort -u > a.txt
sort -u > b.txt
diff a.txt b.txt | grep \'<\' | awk \'{print $2}\'
5.有一个文件,每行格式为 ip username
(1)统计每个用户名出现的次数,和统计每个用户对应的ip数
1.统计每个用户名出现的次数
awk \'{print $2}\' 1.txt > name.txt //先把名字列提出到一个新文件name.txt中
uniq -c name name.txt //再使用uniq命令对name.txt进行重复行统计
2.统计每个用户对应的ip数
sort -u 1.txt | awk \'{print $2}\' > name1.txt //先对原ip文件进行Ip和用户名结合去重,并把结果的名字一列写到新文件name1.txt中
sort name1.txt | uniq -c //对name1.txt进行排序,然后运用uniq即可得出结果
6.给出一个文本 a.txt:比如
http://aaa.com
http://bbb.com
http://bbb.com
http://bbb.com
http://ccc.com
http://ccc.com
让写 shell 统计,最后输出结果:
aaa 1
ccc 2
bbb 3
要求结果还要排序
答案:cut -c8- addr.txt | cut -d\'.\' -f1 | sort | uniq -c
以上是关于使用shell脚本统计文件中ip出现的次数的主要内容,如果未能解决你的问题,请参考以下文章