用shell script查看五大联赛积分表

        平时很少能有时间和精力收看五大联赛的直播,可还是比较关注赛程赛况,但是上网查看信息,要点很多链接,上周写了一个用awk来下载YouTube视频的程序,这次仍然想用gawk提供的网络功能完成这样一个程序,但是遇到了不小的困难,例如我需要在BEGIN过程中获取排名信息的网页,并利用regular expressions对该网页进行多次过滤。于是想到用sed与awk的组合来完成这项工作,另外获取网页用的是curl,比gawk中分析http头的方法又简单得多了,程序在Cygwin中运行起来是这个样子:

 

 


       

 

        下面是代码,正则表达式的部分也不难,就不解释了。为了在awk中很好的区分RS,特意用sed在记录之间加了一行‘#’,这个地方实现的不够精巧,如果不这样,RS设置为空行,FS设置为换行符又不能很好的得到结果,也许RS和FS中的正则表达式没有写好,有兴趣的我们可以交流交流。

 

  1. #! /usr/bin/bash
  2. ################################################################################
  3. #Program:        获取五大联赛球队积分的script程序
  4. #
  5. #Author:         hailongchang@163.com
  6. #
  7. #Date:           2008/11/17
  8. ################################################################################
  9. function usage(){
  10. echo  "请选择您要查看的联赛排名:"
  11. echo 
  12. echo  "1      英格兰足球超级联赛"
  13. echo  "2      意大利足球甲级联赛"
  14. echo  "3      德国足球甲级联赛"
  15. echo  "4      西班牙足球甲级联赛"
  16. echo  "5      法国足球甲级联赛"
  17. echo 
  18. read -p   "请选择序号: "  choice
  19. case  $choice in
  20. "1" )
  21.        name= "epl"
  22.        ;;
  23. "2" )
  24.        name= "seri"
  25.        ;;
  26. "3" )
  27.        name= "bund"
  28.        ;;
  29. "4" )
  30.        name= "liga"
  31.        ;;
  32. "5" )
  33.        name= "fran"
  34.        ;;
  35. *)
  36.        usage
  37.        ;;
  38. esac
  39. }
  40. usage
  41. DataBase= "http://stats.sports.sohu.com/istanding.aspx?lega="
  42. if  [ -n $name ]; then
  43.     Address=$DataBase${name}
  44. fi
  45. curl $Address 2>/dev/null |
  46. sed -e '
  47. s/<[//]*html> //g;
  48. s/<[//]*body> //g;
  49. s/<[//]*script[^>]*> //g;
  50. s/<[//]*table[^>]*> //g;
  51. s/<[//]*div[^>]*> //g;
  52. s/<[//]*form[^>]*> //g;
  53. s/<[//]*td[^>]*> //g;
  54. s/<[//]*tr[^>]*> //g;
  55. s/<[//]*a[^>]*> //g;
  56. s/.*[;{}>]$ //g;
  57. ' | sed -e ' s/[ /t]* //g;s/[0-9]/{1,4/}-[0-9]/{1,4/}.*//g;/^$/d' | sed -e '
  58. 1i ################################
  59. 11i ################################
  60. 21i ################################
  61. 31i ################################
  62. 41i ################################
  63. 51i ################################
  64. 61i ################################
  65. 71i ################################
  66. 81i ################################
  67. 91i ################################
  68. 101i ################################
  69. 111i ################################
  70. 121i ################################
  71. 131i ################################
  72. 141i ################################
  73. 151i ################################
  74. 161i ################################
  75. 171i ################################
  76. 181i ################################
  77. 191i ################################
  78. 201i ################################
  79. 211i ################################
  80. 221i ################################
  81. 231i ################################
  82. ' | awk '
  83. BEGIN{
  84. RS= "################################/n"
  85. FS= "/n"
  86. #OFS="/t"
  87. }
  88. {
  89. printf( "%4s/t%10s/t%4s/t%4s/t%4s/t%4s/t%4s/t%4s/t%4s/t%4s/t/n" ,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10)
  90. }'

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值