老师留得题目

首先我用了一个我最快想到办法

用了一个超级笨的办法#!/bin/bash#(基础)pwd=`pwd`#(临时目录)dir="htmldir"#(源文件地址)html="http://vote.runsky.com/2013/12/jiaoyu/"#(临时文件1)file1="jiayou1.txt"#(临时文件2)file2="jiayou2.txt"#############################################(创建下载目录)if[ ! -d "${pwd}/${dir}"];thencd $pwdmkdir $dirfi############################################zhejiushichaxun(){local paramparam=$1if[ "$param"!= ""]; then#(a=`grep $i $param|awk -F"="'{print $2}'`)a=`grep "
"'{printf $3" "}'`echo "${a}">>1.txtelseecho "file or filename error at:"`date`fi}#############################################(循环10分钟)whiletruedoqz=1#(进入下载目录)cd ${pwd}/${dir}#(进行文件下载)wget -c ${html}#(进行文件分析)#(对文件进行取出tab建.之后在取值)#echo "'s/\x09//g' index.html"|xargs sed -n >${file1}sed 's/\x09//g'index.html |grep -A 5"
  • ">${file1}#(进行一些基本赋值)#(设定需要单独取出的行数)ts=($(grep -n "^-""${file1}"|awk -F":"'{printf $1" "}'))echo ${hs[@]}#(设定循环次数)css=`grep -n "^-""${file1}"|wc -l`for((i=0;i<="${css}";i++))doa=$ib=`echo $(($i+1))`c=`echo ${ts[${a}]}`d=`echo ${ts[${b}]}`#(判断了长度为空的时候跳过本次循环)if[ -z "${d}"];thencontinuefiecho "'"${c}","${d}"p' "${file1}""|xargs sed -n >${file2}zhejiushichaxun ${file2}rm -rf ./${file2}i=$bdonesort -nr -k 3-t ":"${pwd}/${dir}/1.txt >2.txtawk -F " "'{print $3"\x09"$2}'2.txt >1.txtcat -n 1.txt >index.html#(循环读取一段然后进行分析)#rm -rf ${dir}rm -rf ./${file1}rm -rf ./2.txtrm -rf ./1.txtecho "取第${qz}次"qz=`echo $(($qz+1))`#(等待10分钟)sleep 600done
  • 经过一晚上的思考.和观摩了上面学长的一些做法.

    想出了利用awk和for循环的办法.来进行解释

    fori in`curl http://vote.runsky.com/2013/12/jiaoyu/|awk -F"<|>|:" '/票数/{print$4};/redtxt/{print$3}'`#(利用for来对初始变量进行取值)#(下载后显示出文本,然后利用awk#awk中先用-F划分隔符,然后利用'/票数/{print$4};/redtxt/{print$3}'进行分别取值.这里;号代表了分开取值. //之间代表选取某个取值符号#)do#(这里a 选进行判断.数字会成为0字会成为1)a=`echo $i|grep -v '[0-9]*[0-9]'|wc -l`#(判断.如果是数字就打印 i和b如果不是就定义b等于文字.这样就解决了打印在两行的问题)if[ "${a}"= "0"];thenecho $i $belseb=`echo $i`fidone|sort -nr |cat -n#(这里都弄完了就排序.排序之后打印行号.)