2010年1月14日 星期四

[Bash] 將檔案內的字串進行取代

太習慣寫 php 了,其實也有一陣子用 php 當作 script 管機器,最近則是試過 python ,所以,就來試試 bash 吧!


首先會碰到的問題是如何處理參數,這部分可以在 Getopt and getopts 看到很豐富的範例,接下來還可以逛逛 鳥哥的 Linux 私房菜 - 第十三章、學習 Shell Scripts #善用判斷式 ,就可以完成很多事囉!接著我想做的字串取代,就可以使用 sed 來處理,相關參考資料 Bash Shell: Replace a string with another string in all files using sed and perl -pie


最後,留個範例給自己吧


#!/bin/bash

WORK_DIR=
OPTS_ENABLE="false"

usage_help()
{
        echo "Usage> $0 -i \"Path\"  ..."
        echo "    -i \"/tmp\"          # path for write a config file"
}

args=`getopt i:e $*`
if test $? != 0
        then
                usage_help
        exit 1
fi
set -- $args
for i do
        case "$i" in
                -i) shift; WORK_DIR=$1 ;shift;;
                -e) shift; OPTS_ENABLE="true" ;shift;;
        esac
done

# check install path
if test ! -r $WORK_DIR || test ! -x $WORK_DIR || test ! -w $WORK_DIR ; then
        echo "Please Check WorkDir: [$WORK_DIR]"
        exit 1
fi

FILE_CONFIG=$WORK_DIR/config

# bakcup & replace
if test -r $FILE_CONFIG ; then

        cp $FILE_CONFIG $FILE_CONFIG.bak.`date +%Y%m%d%H%M%S`
        sed -e "s/KEY/$OPTS_ENABLE/g" $FILE_CONFIG > $FILE_CONFIG
fi


其中,若存在 bash shell 裡的變數是帶有路徑的, ex: x=/path/bin.exe , 那使用 sed -e "s/KEY/$x/g" $FILE_CONFIG > $FILE_CONFIG 會出問題,解法就是先把 x 變數中的 '/' 取代成 '\/' 吧!


x=$(echo $x | sed "s/\//\\\\\//g")


免費線上廣播播放軟體 - Hinedo 修正無法播放問題

這陣子開始發現 Hinedo 無法播放廣播了,很容易猜想是 Hichannel 改變了播放廣播的架構,這導致不只 Hinedo 不能播放,其他利用類似原理提供廣播的播放軟體也一樣失效。原本打算抽空去看的,但最後一直沒播出時間,今天無意間閒逛,發現在 PTT 的 EZsoft 看到有人提出修正囉!


請更新 Play.vbs ,把該檔第 6 列進行更新


原樣:base = "http://hichannel.hinet.net/player/radio/index.jsp?radio_id="


更新:base = "http://hichannel.hinet.net/player/radio/mediaplay.jsp?radio_id="


希望 Hinedo 官網也能盡快更新囉!


2010年1月9日 星期六

使用 VIM 進行 HEX Mode 編輯 (16進位編輯)

想說以前都用 UltraEdit 編輯遊戲存檔,沒想到 VIM 也能這樣做。


只要編輯時,下 :%! xxd ,就會以 Hex Mode 顯示檔案,然後編輯完想返回可以再用 :%! xxd -r 接著再存檔囉


生活回顧


圖片來源:http://books.com.tw/


昨天早上,上班前望一望桌上的這本書,已被擺在那兩個禮拜,只看了序。也不知是什麼樣的動力,明明也穿好了鞋,最後還是拎了它出門。這本是高中同學去年底推薦我看一看的書,那天我們正談論著運動彩,只是我真的太少看書,連他在高中畢業前送我的「溫一壺月光下酒」我也都還沒看完,更別說前一陣子完婚的好友送我的「性格組合論」。我大概比較喜歡觀察週遭勝過窩在書房看書吧,但明明我就是個阿宅。


每次要返家,心中會有一點點掙扎,因為從晚上五點下班後,大概花二十分吃飯,偶爾擔心假日車潮會只買個麵包牛奶,再花個 30 分鐘的機車車程到達火車站,並且要找一找停車位,最後再花 2~3 小時搭車回家,所以,大部分從下班到回家休息需要花費五個小時,但我還是喜歡回家。昨天在火車站等車時,開始從頭看這本書,前面還算吸引人,但後面開始提到一些數學式子的名稱時,我卻開始感覺枯燥!這本書將讀者定位在不懂或略懂數學的人,所以並沒有仔細描述那些式子,不曉得是不是這個關係,反而讓我看不下去?


那種感覺就像碩班第一篇自己挑選閱讀的 paper 時,前面的長篇大論,我根本沒耐心閱讀,反而看到數學式子會很專心了解它的意義,也有可能就像看 code 時,我只想去 trace 流程而不想多看一眼註解!然而,這本書並不這般影響我的,我還是配著寒風在車站上的涼椅上看著,畢竟也睡不著吧!


偶爾上了車後,發現坐在我身旁的女生拎著一本比這本書厚三倍的,我偷偷描幾眼,竟然看到直方圓、標準差、四分位差、機率甚至書後的查表!驚覺也太巧了吧。雖然我還不確定她到底是念哪個系所,但我相信跟我手上的這本書有微妙的相關。不過車上比較溫暖,她沒看幾眼也睡了,當然我也不落人後。


猜測著她未來可能的職業時,回想起前陣子跟同事吃飯閒聊起看牙醫預約的事,他說竟然要護士小姐花人力去安排,對我們而言,三兩下就能寫出堪用的預約系統,只是隨即而來的,卻是人力過盛所帶來的失業潮,這倒呼應起我為了架設一些環境寫了一套簡單的 Script ,讓安裝的人可以打不到 30 個字的一道指令,按一下 Enter 後,自動產生至少 15 個指令,甚至某些條件上還可以蹦出 50 個指令以上。當時我想了想,的確,有些程式是很方便的,但它方便到不該存在。最簡單的例子就是遊戲外掛,如果普及後,那遊戲就只剩下數字在說話了。或許,哪一天也會出現致命的關鍵程式,讓一大堆工程師失業吧!?


回到書中,字裡行間,透露出要認真地規劃實驗步驟!而後我也發現,生活上真的充斥著許多數學公式,無論科學或社會學,都想用數學勾勒出事件的模型,像我那位同學,也想找我寫一些預測的程式,但我很快地推掉,理由是修 Dataminig 那門課,當老師提到 Final Project 時,第一句話就是跟大家說不要去做股市的分析。雖然我也多少知道什麼黃金交叉的用法,說穿了那只是平均數值的把戲吧。


回到現實生活中,對於數學的使用,我發現我還有點薄弱,頂多看著車票座位可以推一下靠窗靠走道,或是寫程式上算算硬碟傳輸速度外,似乎就沒多少了。


生活的回顧,沒想到從這本書開始。


工作後兩個月,有點因為環境上的福利在想要不要一直做下去,但第三個月末,開始在想是不是要大膽一點創業。目前聽到幾個人生規劃,有開披隡店的故事,也有幫傳統產業做 SkypeOut 整合的,更有靠寫遊戲搭在大型機台的,細想,難到目前手頭上的能力,不足以發光發熱嗎?我想這個問題,我得多觀察與繼續學習個一、兩年吧,恰好用在這個時期多看看多體驗!還有一點很重要的,那就是公司的福利要靠自己爭取 :P 所以,事情順遂時,那就準時下班吧!人生中的每一天,花 1/3 養身體,再花 1/3 賺錢養活自己跟家人,最後 1/3 的多樣性,就得靠自己爭取囉。