[RHCE] Regular Expression

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。
1330088106-32339184.jpg-RHCE正規化表示法

一般執行指令之後的結果都是顯示於螢幕上,Redirection可以將結果導向到指定的裝置或檔案中。例如我們可以將指令正確的結果顯示於螢幕,而將錯誤的訊息整理成另一個檔案方便研究。利用>與<可以決定要導向的目的。標準輸入可以使用<或者<<導向,<表示以覆寫的方式,<<表示以附加的方式。標準輸出可以使用>或者>>導向,>表示以覆寫的方式,>>表示以附加的方式。標準錯誤輸出可以使用2>或者2>>導向,2>表示以覆寫的方式,2>>表示以附加的方式。

使用2>/dev/null可以將命令執行後的錯誤的訊息隱敝掉。如果要將正確的結果與錯誤的訊息同時寫入同一個檔案。指令後先用>或者>>將正確結果寫入檔案,在於命令結尾加上 2>&1則可附加上錯誤訊息。

留言