[sed] in FreeBSD ports
昨天在做 textproc/p5-WordNet-Similarity 的 update 時,因為在 make 會有問題,所以重新檢查了一次 Makefile 。
先看看改過的 Makefile 有哪些部份有變動, ${REINPLACE_CMD} 在 ports 下是代表 sed_inplace 這個 command ,參考 Mk/bsd.port.mk ,可以將它視為 sed 囉。
重點來了,這裡教了我一個用法(其實學會一陣子了,只是怕哪天又忘了還要找),看這個 sed 執行的 pattern:
/wnUnixPath/s|/dict||’
其實它代表的是對於文字列包含有 wnUnixPath 的行數做替換(s|/dict||),替換方式就是將 ”/dict” 刪掉,中間的分隔符號是 ”|” 。如果要執行多個指令,可以用 ”;” 隔開。所以會有下面的 code 出現:
’s|/usr/local/bin/perl|${PERL}|; /wnUnixPath/s|/dict||’
解讀的意思就是:
將 ”/usr/local/bin/perl” 以 perl 的系統變數路徑取代。並將文字列中包含有 wnUnixPath 字串的該列文字中,將其所有的 ”/dict” 刪除。














