2012年5月23日 星期三

2012年5月3日 星期四

用 awk 做 split 及寫入兩個檔案

grep MED ../../complaints_data | awk 'BEGIN{FS="###"} {if(NR%5!=0) print $1 > "model.1.train" ;else print $1 > "model.1.test"} '

awk 條件{動作}
FS:分隔字元
NR:目前處理"第幾行"
awk 的 {動作} 裡可以用 if else,
每處理到 5 的倍數行,寫入 test,其餘寫入 train
if 及 else 之間要 ; (分號)
{動作} 裡如果有 2 行以上的動作用 ; 分開

2012年5月2日 星期三

nfs server and client

假設都安裝好軟體了

[ server site ]
sudo fdisk /dev/vda ( 裝置名稱,不可加數字 )
partition --> primary, extended, logical


sudo mkfs -t ext3 /dev/vda1
格式化,只有 logical disk 有效

cd /tmp; sudo mkdir public
任何目錄下皆可,建立掛載點
sudo mount /dev/vda1 /tmp/public
掛載

df
可以看到掛載起來了

sudo vim /etc/exports
修改可接收的 client 端及讀寫權限 --> /tmp/public *(rw,sync)

server site preparing finish !

[ client site ]
cd /tmp; sudo mkdir tomcat-nfs
任何目錄下皆可,建立掛載點
sudo mount -t nfs SERVER_IP:SERVER_FOLD CLIENT_FOLD
掛載,其中 SERVER_FOLD 即 /etc/exports 裡寫的 /tmp/public
CLIENT_FOLD 可為任何掛載點,例如 /tmp/tomcat-nfs

df
可以看到掛載起來了

2012年3月4日 星期日

find and replace


檔案中要放入 regular express 的字串,包含 . (dot),
先開 vim 把 . 換成 \. 放入 RE search 才會對。

:%s/\./\\./g

:%s/old-string/new-string/g
g 代表該行中每個符合 old-string 都要換成 new-string
如果沒有加 g,只有 :%s/old-string/new-string 的話,
只會替換該行第一個符合的 string,該行其後符合的都跳過。

python 中使用 regular express \b


diag = "pancreatic abscesses"
a = "I don't know what pancreatic abscesses is"
m = re.search( r"\b%s\b" %diag, a )


if m:
    print( "Y" )
else:
    print( "N" )

>>> Y

在python中使用 \b
1. %s 字串填入方式
2. raw string, ex: m = re.search( r"\bpancreatic abscesses\b", a )
3. 要加 r

Ref:
Does Python re module support word boundaries (\b)?


2012年3月3日 星期六

grep 與 cut

從檔案中找出所要的行,然後把所要的字切出來寫入檔案

grep "檢驗" lexicon.semantic | cut -f1 > test

cut 預設以 TAB 為分隔字元,若不是以 TAB 為分隔,再用 -d 選項