發表文章

目前顯示的是有「Linux」標籤的文章

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; }

使用regular expression來match中括號(square bracket)

沒想到在C#中也算玩過一陣子的正規表示式(Regular Expression),來到了Linux C/C++中竟然時常碰壁。 現在只是想要找一個用中括號([])包起來的字串,竟然沒有想的那麼簡單。 假設我要找的目標為 [1234],在以前C#的時候的寫法會是\[(?<num>(\d*)\]。來到了Linux C/C++時,也是用原本的概念組了一串這樣的比對格式: \[([0-9]*\] 沒想到一使用std::regex_match()後就掛了。在編譯(或說指定)這個比對格式給std::regex時就出現Exception了。 這個問題查了一些google上的文章,大家都說遇到正規表示中有的字元的話就是前面加上跳脫字元\就可以啦。沒想到結果會是失敗。 後來看到有人指示要比對中括號的話,需要將它放在中括號中 !! 就是用這樣的方式: [\[]([0-9]*)[\]] 指定要比對於中括號中給定的字元,也就是中括號的左右兩邊的符號。 最後終於是正常編譯過關,且可以正常比對成功了。 而且要注意的是,當將上面這段比對格式放到C/C++的程式碼中,針對\不用再重覆一次,也就是不要寫成 "[\\[]([0-9]*)[\\]]" 這樣比對的結果也是失敗的喔。

安裝CentOS 7.0.4 Server版

跟 RedHat 體系最相近的要算是Fedora了,但可惜的是 Fedora 並沒有提供單純安裝成Linux Server版本的功能。Ubuntu雖然有提供Server的版本,但跟RedHat又有點差異。目前看來只有 CentOS 跟RedHat最為相近且又支援單純安裝Linux Server版本的功能。 要將CentOS安裝成Linux Server版本的話有兩種方式,一種是使用他的Minimal版本,另一種是使用一般的DVD版本,只是在一開始啟動時,就按下Tab鍵,這時會出現一行指令,在指令後輸入 text後,就可以用文字模式來進行安裝了。 設定網路 變更成固定網址 設定gcc開發環境 執行 sudo yum install gcc gcc-c++ make gdb autoconf automake 就可以建立一個可用來進行c/c++開發程式的環境了

Fedora 15安裝Git

在Fedora 15上安裝Git的指令:  su yum install git   git的使用  使用手冊 http://schacon.github.com/git/user-manual.html  用git commit去加入檔案 如果有不想要加入的項目,可以在專案根目錄中新增一個.gitignore的文字檔,裏面寫上不想要用git管理的檔案名稱樣式。  用以下的指令重新commit:  git rm -r --cached git commit 在windows中使用git tortoisegit TortoiseGit使用  http://www.mrmu.com.tw/2011/05/06/git-tutorial-for-beginner/