一道企业shell编程实战题 http://oldboy.blog.51cto.com/2561410/1657042

本脚本对http://edu.51cto.com/的视频具有通用性,暂未发现bug,如有发现,请看官自行解决。

先上脚本

[root@mysql scripts]# cat html_to_table.sh        #!/bin/bash# oldboy linux training# 2015-06-01# Happy Children's Day# 说明:本脚本来自老男孩linux21期学员张耀开发!EduFile=/tmp/edu.htmlEduFile2=/tmp/edu2.htmlUrl="$*"# Check for given parameters [ $# -eq 0 ] && {   echo "USAGE: /bin/sh $0 http://...."   exit 1}# Judge url is ok?curl -I $Url &>/dev/null [ $? -ne 0 ] &&{   echo "Bad url,Please check it"   exit 1}# Defined get pagenum and CourseId Functionsfunction getnum(){        curl -s $Url>$EduFile        grep '"pagesGoEnd"' $EduFile &>/dev/null        if [ $? -eq 0 ]          then            num=`sed -rn 's#.*page=([0-9].*)" class="pagesGoEnd".*$#\1#gp' $EduFile`        else            num=`sed -rn 's|.*page=([0-9].*)#" class="pagesNum".*$|\1|gp' $EduFile`        fi        pagenum=${num:-1}        CourseId=`echo $Url|awk -F "[-.]" '{print $4}'`}# Defined curl html Functionsfunction Curl(){        getnum        for i in `seq $pagenum`          do             curl "http://edu.51cto.com/index.php?do=course&m=lessions&course_id=$CourseId&page=$i" 1>>$EduFile 2>/dev/null        done}# Defined Create table Functionsfunction table(){        sum=""        index=1        sed -rn '/do=lesson/ s#<.*(
#\1http://edu.51cto.com\2#gp' $EduFile > $EduFile2        while read line          do            sum=$sum"
$index
$line"            ((index++))        done <$EduFile2}# Defined Create html Functionsfunction html(){        cat >/tmp/oldboy.html<<-END                
        
test                        
        $sum                                END}function main(){        Curl        table        html}main

测试网页

[root@mysql scripts]# sh html_to_table.sh http://edu.51cto.com/course/course_id-839.html [root@mysql scripts]# sz /tmp/oldboy.html

我将网页文件的table部分粘贴上来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138