+ -
当前位置:首页 → 问答吧 → 初学者写脚本,高手指点下啊!!!【版本二】

初学者写脚本,高手指点下啊!!!【版本二】

时间:2011-08-27

来源:互联网

脚本功能:以notify方式提醒shell区最新回复/主题 只显示五个主题
显示格式“标题前十字符...最后作者@时间”
我是新手,使用的方法可能比较笨,请赐教。
引用:
在合并数据时遇到麻烦

代码:
cat foo1.dat
abc abcabc
dcd dcddcd

代码:
cat foo2.dat
7890
jklm

合并foo1.dat foo2.dat得到
引用:
abc abcabc 7890
dcd dcddcd jklm

暂时只能想到一行一行的合并。

代码: [ 下载 ] [ 隐藏 ]
代码: [ 下载 ] [ 显示 ]
使用 bash 语法高亮
#!/bin/zsh
# 使用到的命令/语法
# 变量 条件测试 while循环 mkdir curl 输出重定向到文件和/dev/null  反单引号 cat 管道 echo grep  正则表达式 perl sed head awk for循环 tr if...;then fi notify-send sleep
old=''
[ -d /tmp/test ] || mkdir /tmp/test
cd /tmp/test
while :
do
curl -s "http://forum.ubuntu.org.cn/viewforum.php?f=21" 2>/dev/null >forum.dat
data=`cat forum.dat`
title=`echo "$data" | grep -oP '[^ ]*topictitle.*' | perl -pe 's|.*title"\>(.*?)\<\/a>.*|\1|' | sed -n '6,$p' | head -5 | sed -r 's/^(.{10}).*/\1\.../'`
name=`echo $data | grep 'class="topicdetails"><a'|perl -pe 's|.*\>(.*?)\<.*|\1|' | sed -n '6,$p' | head -5`
last=`echo $data | grep '"topicdetails" style'|perl -pe 's|.*\>(.*?)\<.*|\1|' | sed '1~2d' | sed -n '6,$p' | head -5 | awk '{print "@"$2}'`
for i in {1..5};do echo $title | sed -n "${i}p">line$i.dat;echo $name | sed -n "${i}p" | tr '\n' '\034' >>line$i.dat;done;
titlename=`cat line?.dat | tr -d '\n' | tr '\034' '\n'`
for i in {1..5};do echo ${titlename} | sed -n "${i}p">line$i.dat;echo $last | sed -n "${i}p" | tr '\n' '\034' >>line$i.dat;done;
new=`cat line?.dat | tr -d '\n'|tr '\034' '\n'`
[ "$new" = "$old" ]  || notify-send "$new"
old=$new
sleep 300
done
 
格式化 0.015 秒, 使用 GeSHi 1.0.8.4

作者: 我就是我2   发布时间: 2011-08-27

你不能perl搞定么?

作者: ChenFengyuan   发布时间: 2011-08-27

ChenFengyuan 写道:
你不能perl搞定么?

我搞不定。我不会perl

作者: 我就是我2   发布时间: 2011-08-27