用shell script查看五大聯賽積分表

來源:互聯網
上載者:User

        平時很少能有時間和精力收看五大聯賽的直播,可還是比較關注賽程賽況,但是上網查看資訊,要點很多連結,上周寫了一個用awk來下載YouTube視頻的程式,這次仍然想用gawk提供的網路功能完成這樣一個程式,但是遇到了不小的困難,例如我需要在BEGIN過程中擷取排名資訊的網頁,並利用regular expressions對該網頁進行多次過濾。於是想到用sed與awk的組合來完成這項工作,另外擷取網頁用的是curl,比gawk中分析http頭的方法又簡單得多了,程式在Cygwin中運行起來是這個樣子:

 

 


       

 

        下面是代碼,Regex的部分也不難,就不解釋了。為了在awk中很好的區分RS,特意用sed在記錄之間加了一行‘#’,這個地方實現的不夠精巧,如果不這樣,RS設定為空白行,FS設定為分行符號又不能很好的得到結果,也許RS和FS中的Regex沒有寫好,有興趣的我們可以交流交流。

 

  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. }'

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.