#----------------------------------------------------------#
第一次更新:解决乱码问题。
老男孩老师QQ密我,无意中产生兴趣,并进行尝试。于是就有下面的过程:
----------------------
老男孩 14:11:56
兄弟
老男孩 14:12:10
http://book.51cto.com/art/201202/314590.htm 推荐你看看。
老男孩 14:12:35
另外,能否用你的脚本 批量下来 改名?
老男孩 14:12:40
老男孩 14:14:55
一道SHELL题:
http://book.51cto.com/art/201202/314590.htm
用脚本 批量下载文章,然后改成中文对应名称?
第二次更新:嵌套命令
煮酒品茶:还是原来那个问题sed -n "?"p filename问题,由于学到shell方面有更方便的操作,原来那个是大小嵌套,学shell时有写到$()那我们最终的脚本如下。
- j=0
- for ((i=314494;i<=314561;i++))
- do
- wget http://book.51cto.com/art/201202/$i.htm
- $((++j))
- cat $i.htm |grep ^\<title\>|sed 's/<title>//g'|sed 's/<\/title>//g'|sed 's/\ //g'|sed 's/-51CTO.COM//g'|iconv -f gb2312 -t utf-8 >>title.htm
- sed '1,/<p><p>/ D' $i.htm | sed '/align=right>/,$d' |sed 's/<br>//g'|sed 's/<\/p>//g' |sed 's/<p>//g' >$j.htm
- mv $j.htm $(sed -n "$j"p title.htm)$j.htm
- done
- rm -rf 3* *title*
- for ((i=314494;i<=314561;i++))
- do
- wget http://book.51cto.com/art/201202/$i.htm
- done
- sed '1,/<p><p>/ D' $i.htm | sed '/align=right>/,$d' |sed 's/<br>//g'|sed 's/<\/p>//g' |sed 's/<p>//g' >$j.htm
下一步是找到标题,并想办法指重命名。
那篇文章写了,
mv filename 'sed -n "$i"p filename2'进行批量。我们先获取到。
先做思考:
1、在下载好的文件中经过比较发现<title>与</title>中间就是我们所需之标题。
2、sed中不允许有空格发生,所以进行替换。并去除不相关的内容。
-------------------------------------
- cat $i.htm |grep ^\<title\>|sed 's/<title>//g'|sed 's/<\/title>//g'|sed 's/\ //g'|sed 's/-51CTO.COM//g' >>title.htm
-------------------------------------------
思路已完,然后进行脚本整合:
- set -x
- j=0
- for ((i=314494;i<=314561;i++))
- do
- wget http://book.51cto.com/art/201202/$i.htm
- $((++j))
- echo $j
- cat $i.htm |grep ^\<title\>|sed 's/<title>//g'|sed 's/<\/title>//g'|sed 's/\ //g'|sed 's/-51CTO.COM//g' >>title.htm
- sed '1,/<p><p>/ D' $i.htm | sed '/align=right>/,$d' |sed 's/<br>//g'|sed 's/<\/p>//g' |sed 's/<p>//g' >$j.htm
- echo $j.htm $j
- mv $j.htm `sed -n "$j"p title.htm`$j.htm
- rm 3* -rf
- done
----------------------------
煮酒品茶:方便的话在后面加一个rm -rf title.htm
最终效果:
煮酒品茶:这里显示的是乱码,有些可显示有些不可显示,估计是编码的问题。现在已是0.44,先去睡觉,明天再测测。
老男孩老师指导了一下:所以进行更新:
对脚本进行更改以及优化:
- [root@bogon 51cto]# cat down
- set -x
- j=0
- for ((i=314494;i<=314561;i++))
- do
- wget http://book.51cto.com/art/201202/$i.htm
- $((++j))
- cat $i.htm |grep ^\<title\>|sed 's/<title>//g'|sed 's/<\/title>//g'|sed 's/\ //g'|sed 's/-51CTO.COM//g'|iconv -f gb2312 -t utf-8 >>title.htm
- sed '1,/<p><p>/ D' $i.htm | sed '/align=right>/,$d' |sed 's/<br>//g'|sed 's/<\/p>//g' |sed 's/<p>//g' >$j.htm
- mv $j.htm `sed -n "$j"p title.htm`$j.htm
- done
- rm -rf 3* *title*
看下效果:
----------------------------------------------
[root@bogon 51cto]# ls
down 过失19好出风头,锋芒太过(1)66.htm
前言1.htm 过失19好出风头,锋芒太过(2)67.htm
过失10缺乏信用,欠钱不还(1)33.htm 过失19好出风头,锋芒太过(3)68.htm
过失10缺乏信用,欠钱不还(2)34.htm 过失1说话太直,口无遮拦(1)2.htm
过失10缺乏信用,欠钱不还(3)35.htm 过失1说话太直,口无遮拦(2)3.htm
过失11遭遇小人,被其利用(1)36.htm 过失1说话太直,口无遮拦(3)4.htm
过失11遭遇小人,被其利用(2)37.htm 过失2无视上司,自作主张(1)5.htm
过失11遭遇小人,被其利用(3)38.htm 过失2无视上司,自作主张(2)6.htm
过失11遭遇小人,被其利用(4)39.htm 过失2无视上司,自作主张(3)7.htm
过失11遭遇小人,被其利用(5)40.htm 过失3议论上司,不懂忌讳(1)8.htm
过失12独享荣耀,抢夺功劳(1)41.htm 过失3议论上司,不懂忌讳(2)9.htm
过失12独享荣耀,抢夺功劳(2)42.htm 过失3议论上司,不懂忌讳(3)10.htm
过失12独享荣耀,抢夺功劳(3)43.htm 过失3议论上司,不懂忌讳(4)11.htm
过失12独享荣耀,抢夺功劳(4)44.htm 过失4顶撞老板,不服从安排(1)12.htm
过失13故作幽默,乱开玩笑(1)45.htm 过失4顶撞老板,不服从安排(2)13.htm
过失13故作幽默,乱开玩笑(2)46.htm 过失5好拍马屁,不注重自我提升(1)14.htm
过失13故作幽默,乱开玩笑(3)47.htm 过失5好拍马屁,不注重自我提升(2)15.htm
过失14不被接受,人际紧张(1)48.htm 过失5好拍马屁,不注重自我提升(3)16.htm
过失14不被接受,人际紧张(2)49.htm 过失6大事不请示,小事瞎汇报(1)17.htm
过失14不被接受,人际紧张(3)50.htm 过失6大事不请示,小事瞎汇报(2)18.htm
过失14不被接受,人际紧张(4)51.htm 过失6大事不请示,小事瞎汇报(3)19.htm
过失15参与是非,陷入同事纷争(1)52.htm 过失6大事不请示,小事瞎汇报(4)20.htm
过失15参与是非,陷入同事纷争(2)53.htm 过失6大事不请示,小事瞎汇报(5)21.htm
过失15参与是非,陷入同事纷争(3)54.htm 过失7过于张扬,爱做上司代言人(1)22.htm
过失16爱说八卦,为达目的不择“嘴”段(1)55.htm 过失7过于张扬,爱做上司代言人(2)23.htm
过失16爱说八卦,为达目的不择“嘴”段(2)56.htm 过失8领导夹菜你转盘儿,领导讲话你插嘴(1)24.htm
过失16爱说八卦,为达目的不择“嘴”段(3)57.htm 过失8领导夹菜你转盘儿,领导讲话你插嘴(2)25.htm
过失17与上司或同事发展办公室恋情(1)58.htm 过失8领导夹菜你转盘儿,领导讲话你插嘴(3)26.htm
过失17与上司或同事发展办公室恋情(2)59.htm 过失8领导夹菜你转盘儿,领导讲话你插嘴(4)27.htm
过失17与上司或同事发展办公室恋情(3)60.htm 过失8领导夹菜你转盘儿,领导讲话你插嘴(5)28.htm
过失18自视甚高,眼高手低(2)62.htm 过失9大大咧咧,东西乱扔(1)29.htm
过失18自视甚高,眼高手低(3)63.htm 过失9大大咧咧,东西乱扔(2)30.htm
过失18自视甚高,眼高手低(4)64.htm 过失9大大咧咧,东西乱扔(3)31.htm
过失18自视甚高,眼高手低(5)65.htm 过失9大大咧咧,东西乱扔(4)32.htm
过失18自视甚高,眼高手低61.htm
[root@bogon 51cto]#
----------------------------------------------------------------
总结要点:
1、首先对整个过程要有一个大概念的思路,规律下载,规律去除不需要的内容,规律拿标题。批量改名字。
2、对文件查找要很熟悉,不然无法进行下去。以及正则。
3、最终写出最简洁的脚本,当然我的脚本可能不是最简洁的。
煮酒品茶:在进行编辑时品茶正好看到了视平菲在菲地烧华人商店,18死,20来人伤!心里很难平静,一股无名之火无从发出,但一想国情,不能说也不敢说。只能忍着。或许中国根本就不需要爱国的人吧,因为理智爱国嘛。现在爽了
谢谢DN833、老男孩oldboy对sed的指导,也是自己学shell过程中并没有太多的实践,只是先加快速度阅读并理解书中意思。
编码问题可以调整客户端与服务端字符集。或者通过iconv命令来转换:
例:
[oldboy@student ~]$ cat oldboy.log
?o¢linux?????? QQ31333741
[oldboy@student ~]$ iconv -f gb2312 -t utf-8 oldboy.log
老男孩linux运维实战培训 QQ31333741