發表文章

目前顯示的是 2017的文章

bash script中字串處理

在撰寫bash script時,字串處理算是最常用到的功能了。而且你會需要用到的字串處理還真不少。以下是一些最近在學習時有使用到的字串處理功能的筆記。 字串串接 常常會需要將處理到的內容串接並保存到一個變數中,在bash script中可以用以下的指令完成: newLine="${orgLine} other line" 可是如果你要處理的字串中含有'\r'這類的特殊字元時,要先將它去除,不然你會debug到死也不知為何你的字串都無法正常串接。因為雖然你有正常串接了,但在echo出來時,一遇到'\r'就會再將游標移到前頭重印,就會讓你以為你都沒有正確地串接字串。 要移除 '\r' 的話,可以用 tr 指令。例如: removeLine=$(echo $newLine | tr '\r' ' ') 要由一個檔案中一行行地處理所要的資料時,可以用如下的方式: while read -r line; do # your process done < <(cat $fileName | grep key1 | grep key2) 不過如果最後再使用 tr 指令想要替換某個字元時,好像就無法正常讀入行的資料。所以最好是在內迴圈自行再處理。 字串基本處理 截取部份字串: sStr=${fullStr:0:10}    # 由0開始取10個字元 移除部份字串 有時會需要將字串中符合樣式的部份給移除,且查詢的方式有分由前至後或由後至前,以及是移除最長或最短的樣式的組合。 前至後 後至前 移除最長 ## %% 移除最短 # % 例如有個完整的檔案路徑,想要分別取出檔名部份及路徑部份的話: fullPath=/opt/game/setting.conf fileName=${fullPath##*/} path=${fullPath%/*} int main(){ return 0; }

移動SVN及重新連接

近期有個專案是要將原本放置在windows主機中的visual svn的svn程式碼銦庫改到另一個Linux中的svn程式碼倉庫中。在查詢了網路上其它人的作法後,大致上緗利地完成了整個程式碼倉庫的移動。 我們移動的作法如下: 備份原本的程式碼倉庫 svnadmin dump <your-repo-name> > <backup-repo-name.dump> 在新的主機上建立新的repo目錄 svnadmin create <new-repo> 匯入程式碼 svnadmin load <new-repo> < <backup-repo-name.dump> 大致上使用上述的三個步驟就可以完svn程式碼倉庫的移動了。這種作法也可以用於備份程式碼倉庫的作業。   移動完成後,因為主機的ip也不同了,而且repo的名稱可能也不同了,接下來就是開發人員本地端原本的svn程式碼目錄要如何重新導向到新的目錄。目前採用的方式如下: 先備份你本地端原本的目錄 在你原本的svn程式碼目錄上重新用svn check out針對新的svn repo重新取出一份 可能要再將一些原本備份下來的原始目錄copy回新的目錄,確保你本地端的working copy都有copy回來,以便到時能再check in   將程式碼重新check in到另一個svn中 由檔案總管copy專案目錄到新目錄中,此時因為檔案總管不會一併copy .svn這類的隱藏目錄,所以copy過去的只是專案的程式碼 在新copy的專案目錄上執行svn check in的步驟將它簽入到新的svn repo即可