搜尋此網誌
RHCE - 正規畫表示法
REGULAR EXPRESSIONS
正規話表示法的用途在於當使用者需要進行字串的比對時,可以提供多種的比對方式。
對於系統管理員而言,都有很大的機會使用到正規化表示法。
例如你要在很長的log檔中找到特定的字串,或者在系統中找到某個字開頭的檔名等等。
而且正規化表示法可以用於多種伺服器軟體上面,使得管理員更方便管理不同的系統。
正規化表示法主要是利用特殊字符,代替在搜尋可以表示多種字元或者字串。
常用的字符如下:
*:表示搜尋零到任意個字元,例如ab*,則a, ab, abb, abbb等都會符合搜尋的結果。
.:表示搜尋單一任意字元,例如ab.,則aba, abb, abc, abd等都會符合搜尋的結果。
[]:表示搜尋單一[]中任意字元,例如a[bc]b,則abb, acb都會符合搜尋結果。
[^]:表示搜尋單一[]以外任意字元,例如a[^bc]b,則adb, aeb, afb等都會符合搜尋結果。
^:表示搜尋以指定字串為開頭的字串,例如^abc,則abcd, abcde, abcdef都會符合搜尋結果。
$:表示搜尋以指定字串為結尾的字串,例如abc$,則dabc, deabc, defabc都會符合搜尋結果。
.*:表示搜尋任意個字元,與*不同在於.*至少會含有一個,所以ab.*不會搜尋到a。
\:跳脫字符,若以正規化的保留符號作條件搜尋時,在符號前加上\,將保留符號視為一般字串。
GREP
Grep的用途在於取得指定關鍵字的那行文字,可用於檔案內容,或者命令輸出的結果中。
而使用Grep時可以配合正規化表示法,使得搜尋更加的靈活。
Grep指令為 #grep [參數] [關鍵字] [檔案]。
-A:後面接數字,例如A3,表示列出搜尋結果的那行之外,後續三行也列出來。
-B:後面接數字,例如B3,表示列出搜尋結果的那行之外,前面三行也列出來。
-n:搜尋結果於每行開頭加上行數。
-v:反向搜尋,列出不包含關鍵字的結果。
-i:關鍵字不分大小寫。
PIPELINE
Pipeline是將我們目前執行的輸出導入到下一個指令的輸入,利用|區隔兩段指令。
例如要將/etc/passwd中包含root字串的行列出。
則可以輸入 #cat /etc/passwd | grep 'root',就可將cat指令的輸出結果轉為grep指令的輸入。
REDIRECTION
當使用者輸入一筆指令,這稱為標準輸入(Standard Input, STDIN),代碼為0。
輸出的結果分為正確與錯誤,正確為標準輸出標準輸出(Standard Output, STDOUT),代碼為1。
錯誤為標準錯誤輸出(Standard Error Output, STDERR),代碼為2。
一般執行指令之後的結果都是顯示於螢幕上,Redirection可以將結果導向到指定的裝置或檔案中。
例如我們可以將指令正確的結果顯示於螢幕,而將錯誤的訊息整理成另一個檔案方便研究。
利用>與<可以決定要導向的目的。
標準輸入可以使用<或者<<導向,<表示以覆寫的方式,<<表示以附加的方式。
標準輸出可以使用>或者>>導向,>表示以覆寫的方式,>>表示以附加的方式。
標準錯誤輸出可以使用2>或者2>>導向,2>表示以覆寫的方式,2>>表示以附加的方式。
使用2>/dev/null可以將命令執行後的錯誤的訊息隱敝掉。
如果要將正確的結果與錯誤的訊息同時寫入同一個檔案。