使用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出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

用shell统计访问日志里每个ip访问次数

shell脚本统计文件中单词的个数

SHELL脚本学习 --- 第八次作业(安全脚本)

Shell脚本

awk命令之 - 统计/etc/passwd文件中各用户所使用的shell类型及出现次数

Linux Shell之统计某个字符串在文件中的出现次数