摒弃了多线程,发现多线程和单线程用的时间差不多,多线程情况下存在统计错误的情况,有待排查原因。
[INFO]猫仔饭 see 167 movies
[INFO]Please wait a moment....
#/bin/bash
# name: data_analysis.sh
# version: 1.0
# ceateTime: 2018-08-10
# description: 输入豆瓣用户id,得出来豆瓣用户看过电影的类型便签
# author: mengyanhuangchao
# email: 406993906@qq.com
# description: 判断输入参数是否合
#INFO打印
info_log(){
echo -e "[INFO]$1"
}
#SUCCESS打印
success_log(){
echo -e "\033[32m[SUCCESS]\033[0m$1"
}
#ERROR打印
error_log(){
echo -e "\033[31m[ERROR]\033[0m$1"
}
if [ $# -eq 1 ];then
if [ -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ];then
info_log "The user id you searched for is $1"
else
error_log "The user id must number"
exit 1
fi
else
error_log "Usage: bash $0 162545416";
exit 1
fi
movie_number=`curl -s https://movie.douban.com/people/$1/collect|egrep "看过的电影"|awk -F '(' '{print $2}' |awk -F ')' '{print $1}'|uniq`
user_name=`curl -s https://movie.douban.com/people/162545416/collect|egrep "看过的电影"|awk -F '看过的电影' '{print $1}'|awk -F '>' '{print $2}'|tail -n1`
info_log "$user_name see $movie_number movies"
info_log 'Please wait a moment....'
echo '剧情 喜剧 动作 爱情 科幻 悬疑 惊悚 恐怖 犯罪 同性 音乐 歌舞 传记 历史 战争 西部 奇幻 冒险 灾难 武侠 情色' >type
for i in `cat type`;do
echo $i 0 >> data
done
for i in `seq 0 15 $movie_number`;do
curl -s https://movie.douban.com/people/$1/collect?start=$i > flow_data
for i in `cat type`;do
n=`cat flow_data|grep $i|wc -l`
m=`cat data |grep $i|tail -n 1|awk -F ' ' '{print $2}'`
x=`expr $m + $n`
echo $i $x >>data
done
done
cat data |tail -n 21 |sort -rn -k2 > $user_name
rm flow_data type data
success_log "data existence $PWD/$user_name"
结果如下:
test@test data1]$ bash data_analysis.sh 162545416
[INFO]The user id you searched for is 162545416[INFO]猫仔饭 see 167 movies
[INFO]Please wait a moment....
[SUCCESS]data existence /home/test/data1/猫仔饭
[test@test data1]$ cat 猫仔饭
剧情 146
恐怖 65
悬疑 61
爱情 54
惊悚 52
犯罪 46
喜剧 43
奇幻 40
战争 27
冒险 19
音乐 18
动作 17
武侠 15
情色 14
科幻 12
历史 7
传记 6
同性 2
西部 1
灾难 1
歌舞 0