博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试笔试-脚本-1:使用shell脚本输出登录次数最多的用户
阅读量:4342 次
发布时间:2019-06-07

本文共 1459 字,大约阅读时间需要 4 分钟。

原题目:

 一个文本类型的文件,里面每行存放一个登陆者的IP(某些行是反复的),写一个shell脚本输出登陆次数最多的用户。

之前刚看到这个题目时,立即没有想到一行直接解决的办法,尽管知道能够先进行排序,可是后面因为对uniq命令的參数不熟悉,所以用了比較背的办法,就是直接编写shell脚本程序来解决问题。

如今如果測试数据例如以下:

111.111.111.11110.10.10.10222.222.222.222111.111.111.111333.333.333.33310.10.10.10111.111.111.111333.333.333.33310.10.10.10222.222.222.222333.333.333.33310.10.10.10111.111.111.111222.222.222.222333.333.333.33310.10.10.10111.111.111.111111.111.111.111333.333.333.333333.333.333.333333.333.333.333222.222.222.22210.10.10.10222.222.222.222111.111.111.111333.333.333.333333.333.333.333111.111.111.11110.10.10.10333.333.333.333222.222.222.222222.222.222.222222.222.222.222222.222.222.222111.111.111.111111.111.111.111333.333.333.333333.333.333.333333.333.333.333333.333.333.333

解决此问题的脚本程序例如以下:

#!/bin/cshset LINES=`sort $1`set i=1set num=`cat $1 | wc -l`set max=0set cur=""set counter=1set ip=""while ( $i <= $num  )	if ( $LINES[$i] != $cur ) then		if ( $max < $counter  )	then			set max=$counter			set ip=$cur		endif		set counter=1		set cur=$LINES[$i]	else		@ counter++	endif	@ i++	endif ( $max < $counter ) then	set max=$counter	set ip=$curendifecho $ip

首先对IP地址进行排序,排序后找到反复次数最多的那个IP地址就能够了。这个逻辑上还是比較简单的。

可是假设知道能够用uniq命令输出反复的次数的话,这个问题就变得非常easy了:

cat test.txt | sort | uniq -c | sort -r -n -k 1 | head -n 1 | awk '{print $2}'

uniq -c命令将以反复次数作为第一列输出。然后我们使用sort命令的-k指定依照第一列进行排序。-n表示使用数值排序方法而不是默认的字符串排序,-r表示降序输出。

使用head输出第一行,再用awk 输出第二列便是反复次数最多的IP地址

转载于:https://www.cnblogs.com/zfyouxi/p/5400250.html

你可能感兴趣的文章
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
查看>>
MFC接收ShellExecute多个参数
查看>>
volatile和synchronized的区别
查看>>
RocketMQ介绍与云服务器安装
查看>>
并发量计算研究
查看>>
类中的静态函数和非静态函数的区别
查看>>
windows 下安装Apache
查看>>
Effective C++ 34 区分接口继承和实现继承
查看>>
Redis配置文件参数说明
查看>>
drf视图组件、认证组件
查看>>
Python_正则表达式
查看>>
[USACO08NOV]时间管理Time Management(排序,贪心)
查看>>
Hybrid App开发设计与实现
查看>>
Fedora14 mount出现错误时解决办法【亲测有效】
查看>>
实验四
查看>>
回顾冒泡排序
查看>>
Ajax
查看>>
006 numpy常用函数
查看>>
tensorflow学习笔记(二)
查看>>
HttpModule Url 重写
查看>>