假设有一些域名,存储在nowcoder.txt里,现在需要写一个shell脚本,将域名取出并根据域名进行计数排序处理(降序)。
假设nowcoder.txt内容如下:
http://www.nowcoder.com/index.html http://www.nowcoder.com/1.html http://m.nowcoder.com/index.html
你的脚本应该输出:
2 www.nowcoder.com 1 m.nowcoder.com
http://www.nowcoder.com/index.html http://www.nowcoder.com/1.html http://m.nowcoder.com/index.html
2 www.nowcoder.com 1 m.nowcoder.com
1
1
http://www.nowcoder.com/index.html http://www.nowcoder.com/1.html http://m.nowcoder.com/index.html
2 www.nowcoder.com 1 m.nowcoder.com
declare -A map
while read line
do
tmp=(${line//\// })
((map[${tmp[1]}]++))
done < nowcoder.txt
function InsertSort(){
tmp=()
for ve in ${map[*]}
do
tmp[${#tmp[*]}]=$ve
done
q=${#tmp[*]}
for ((i=0;i<$q;i++))
do
for ((j=$i+1;j<$q;j++))
do
if [ ${tmp[$i]} -lt ${tmp[$j]} ];then
t=${tmp[$i]}
tmp[$i]=${tmp[$j]}
tmp[$j]=$t
fi
done
done
}
InsertSort
for ((i=0; i<$q; i++))
do
for ve in ${!map[*]}
do
if [ ${tmp[$i]} -eq ${map[$ve]} ];then
printf "${map[$ve]} $ve\n"
fi
done
done awk awk -F "/" '{
arr[$3]++
} END {
for (i in arr) {
printf("%d %s\n", arr[i], i)
}
}' | sort -r