Re: 关注shell区最新回复/主题·脚本练习
发表于 : 2011-08-29 23:01
这样就如果出现在置顶位置就干掉,下面就放过。
fnan 写了:我的版本写好了,要看的时候就说一声。
#我没有用文件,全是变量。用位置算法可以一次处理一大块。#!/bin/bash
old=''
while :;do
fw=$(curl -s "viewforum.php?f=21" 2>/dev/null)
line=$(sed -rn '/topictitle/H;${g;s/(.*<b>置顶.<).*/\1/p}' <<<"$fw" |wc -l)
echo "line=$line"
a=$(sed -nr 's/.*"topictitle">(.{1,20}).*<\/a>.*/\1.../p' <<<"$fw" |sed -n "$line,+6p")
b=$(sed -nr 's/.*"topicdetails"><.*>(.*)<\/a>$/\1/p' <<<"$fw" | sed -n "$line,+6p")
c=$(sed -nr 's/.*"topicdetails" style.* (.*)<\/p>/\1/p' <<<"$fw"|sed -n 'n;p'|sed -n "$line,+6p")
unset fw
new=$(paste <(echo "$a") <(echo "$b") <(echo "$c"))
[[ "$new" == "$old" ]] || zenity --info --title="shell区最新回复七条" --text="$new"
old="$new"
sleep 600
done
#这么多信息。我想添加显示回复数.
#算法之外,什么都无所谓。使用zenity要点确定. 我使用kde4 通知区域在下方.我还是用notify-send得了.
代码: 全选
...
out=$(diff <(echo "$new") <(echo "$old") | grep '^<' | sed 's/^</<br\/><font color=red>/g;s/$/<\/font>/g')
[ "$new" = "$old" ] || notify-send "$out"
old="$new"
sleep 480
done
代码: 全选
data0=$(curl x 127.0.0.1:8080 -A "Mozilla/6.0" -s "http://forum.ubuntu.org.cn/viewforum.php?f=21" 2>/dev/null)
data1=$(sleep 5s;curl x 127.0.0.1:8080 -A "Mozilla/6.0" -s "http://forum.ubuntu.org.cn/viewforum.php?f=21" 2>/dev/null)
if [ ${#data0} -gt ${#data1} ];then
data="$data0"
else
data="$data1"
fi