有一个文件,里面有二列,第一列ip地址,第二列是时间,同一个ip可能出现多次,但时间不同.
文件类似下面的样子:
192.168.1.1 12:12
193.13.34.4 12:45
192.168.1.1 18:02
134.345.34.34 19:21
196.196.1.1 21:15
192.168.1.1 22:15
192.13.34.4 19:18
192.13.34.5 21:18
192.168.1.1 21:18
现要求写一脚本,显示出现最多的ip top 3
命令: cat mytime.txt|grep -v '^$' | awk '{print $1}'|sort|uniq -c|sort -r | head -3
命令解析: grep -v '^$' 过滤掉无用的空行 awk '{print $1}'展示IP地址一列
sort首先排序之后调用uniq -c 记录一共出现多少次(必须先排序)
sort -r 按照由大到小排序 head -3 只展示前三列。
.处理一下文件内容,将域名取出并进行计数排数,如处理:
http://www.baidu.com/index.html
http://ww.baidu.com/1.html
http://www.baidu.com/2.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html
得到如下结果:域名的出现次数,域名
4 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
命令: cat myweb.txt | grep -v "^$"|sed 's;\/\/;\/;'|awk -F / '{print $2}'|sort|uniq -c|sort -r
命令解析:grep -v "^$"过滤掉无用的空行
sed 's;\/\/;\/;' 将两个反斜线//替换为一个反斜线/
awk -F / '{print $2}' 设定分隔符为反斜线/ 输出第二项
sort首先排序之后调用uniq -c 记录一共出现多少次(必须先排序)
sort -r 按照由大到小排序
写一个登录shell文件,输入6次错误的用户名或密码不能登录,输入xxx用户,xxx密码登录成功
#! /bin/bash
index=0
right="true"
maxtimes=3
#注意这里多个条件的判断形式
while [ "$right" == "true" -a $index -lt $maxtimes ]
do
read -p "please input your user name:" username
read -p "please input your user password:" userpassword
#注意这里多个条件的判断形式
if [ "$username" == "root" -a "$userpassword" == "root" ]
then
right="false"
else
echo "your user name or password is not right"
fi
((index++ ))
if [ $index -eq $maxtimes ]
then
echo "you have input more than the max times"
fi
done
1、数据文件格式如下:
10123456 ch1
20143456 ch3
30123456 ch2
40133456 ch1
50163456 ch1
60113456 ch1
70123456 ch2
80123456 ch2
90123456 ch4
100123456 ch3
110123456 ch1
120123456 ch1
要按照第8列,分类,把文件拆分,分别写入不同的文件里。文件名为:ch1.txt、ch2.txt、ch3.txt。
filename="/home/song/myinfo.txt"
while read line
do
#注意这里得到管道的执行结果
Name=$(echo $line|grep -v '^$'|awk '{print $7}')
if [ "$Name" != "" ]
then
echo $line>> $Name
fi
done < $filename