Re: [問題] 要做個自動抓基金淨值功能
※ 引述《Storm (風)》之銘言:
> ※ 引述《theater.bbs@ptt.cc》之銘言:
> > 我執行時再次遇到問題
> > D:\Program Files\GnuWin32\bin>wget -O - http://fund.cnyes.com/Detail/historicalN
> > av/B08,020.html |awk '/個別基金:start/ {print gensub(/.*"pe r">([0-9]+\.[0-9][0-
> > 9])<\/td>.*/,"\\1","") > "a.txt"}'
> > 出現這訊息
> > 檔案名稱、目錄名稱或磁碟區標籤語法錯誤。
> 另外我剛剛測試時,發現網頁的標籤有一點變化,gensub() 一開頭的正規表示式
> 要稍微修改一下:
> /.*"pe .">([0-9]+\.[0-9][0-9])<\/td>.*/
> ^本來是"r",但是剛剛測試發現這個 class name 會變,改成 "."
> 會比較好。
使用 wine 執行 Windows XP 的 cmd.exe 和 GNU Win32 的 wget 和 awk
進行測試後,我想我知道問題在哪了,問題出在 cmd.exe 對「'」單引號
的解釋顯然不是當單引號用,這就會造成一些問題,因為解析 HTML 的正
規表示式中有雙引號,gensub() 函式的字串參數也有用到雙引號,若要把
整個 awk 的參數改用雙引號括起來的話,會讓整個參數變得很醜,不過也
只好這樣啦!
把 awk 的參數修改成這樣試試看:
"/個別基金:start/ {print gensub(/.*pe ..>([0-9]+\.[0-9][0-9])<\/td>.*/, \"\\1\",\"g\") > \"a.txt\"}"
簡單的說,要用「\」跳脫 awk 參數內用到的「"」,否則 awk 會收到不完整的
參數而發生錯誤。
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: c-76-111-34-186.hsd1.ga.comcast.net
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章