11-5 過濾器
11-5-1 過濾命令彙集 Unix/Linux 系統最有價值的是,外殼程式是自由發展出來的,許多特殊工具也在此情況下被大量發展出來。接下來,我們來探討一些特殊文件處理的工具,它們常被統稱為『過濾器』(Filter)。過濾器從標準輸入(或轉向輸入)取得一串資料,以某種方式轉換(或處理),並將結果送到標準輸出(或轉向輸出),其運作方式如圖 11-3 所示。表 11-1 為較常使用的過濾器工具,接下來幾節(第 11-7 ~ 11-9 節)將介紹一些較常用且較複雜過濾器的操作方式;本節先介紹一些過濾器共同操作方法。
圖 11-3 過濾器功能 表 11-1 Unix/Linux 常用過濾器命令
11-5-2 聚集過濾器 單一命令的過濾器功能並沒有辦法顯現出來有何特殊,Unix/Linux 過濾器可貴的地方,就在於利用管道(pipeline,|)將許多過濾器命令結合在一起,其處理能力不容小觀。譬如,$ cat /etc/passwd | sort | more,表示 /etc/passwd 檔案內容經由 sort 命令過濾後,再傳送給 more,操作範例如下:
11-5-3 正規表示式 簡單的說,過濾器即是一個檔案(或一連串資料)經過某一特殊功能處理之後,得到所需要的訊息。比如說,檢蒐文件內是否拼字錯誤、替換文件內某一語句、選取某一特殊字元資料、或剪接某片段文字訊息等等。也許讀者會認為這些文件處理工具,應該與系統操作沒有任何關係,而與一般文書處理事務較有關才對;但為何這些過濾器會被號稱為 Unix/Linux 系統最傲人的工具呢?讀者可以試著想看看,如果我們想要了解目前系統狀況,也許必須輸入某些命令來觀察,譬如,輸入 ps 命令觀察系統目前有哪些程序在執行、輸入 nstat 命令觀察目前有哪些網路傳輸埠口被開啟、輸入 who 命令觀察目前有哪些使用者登入系統、甚至必須隨時隨地去閱讀『日誌檔案』(Log file),是否有使用者越權的存取狀態等等。當執行這些命令時,大多會出現一連串的大筆資料,我們再仔細的閱讀這些資料,從中找出所期望的訊息,如此一來,會出現兩個問題: Ø 人工檢蒐文件容易疏忽遺漏。 Ø 必須隨時隨地下達系統管理命令,並檢視其執行結果。 過濾器除了方便操作系統之外,解決上述兩大問題才是它的主要目的。我們可以依照某些特殊需要,編寫 Shell 程式(第七章介紹),其中包含過濾器,並可設定成定期執行程式(cron,第十二章介紹),如此便可以解決上述兩大問題(第十八章介紹)。 既然要由搜尋文件中,焠鍊出所需要的資訊,那應該如何表示所要搜尋的文字(或稱字串,Pattern)?這是一件很大的學問。搜尋文件不可能指定某一字元(或字串),譬如,僅在文件中尋找『RedHat』,而將其替換成『Fedora』,這種過濾功能太為簡單了(但也有許多地方僅這樣用),也沒什麼萃取功能。一般所欲尋找的字串大多是有一些共通性,甚至模糊相似的地方。我們利用這些模糊相似的字串,作為搜尋的依據,如此才能找出較精煉的資訊。而 Unix/Linux 利用工業領域裡常用的『正規表示式』(Regular expression)來表示資料之間共通模糊相似的地方。表 11-2 為較常用的正規表示式,Unix/Linux 系統的各種搜尋、編輯工具都會使用到這些表示法,如 grep、cut、paste、sed、awk等等文字處理工具。在爾後幾個章節裡,讀者將會看到這些表示式的使用範例。簡略說明如下: ² ^Text:一列開始是 Text 字串。 ² Text$:一列的結尾是 Text 字串。 ² [xyz]:x、y、或 z 字元皆符合。 ² x1|y2:x1 或 y2 字串皆符合。 ² x*:一個以上或沒有 x 字元皆符合。 ² x+:一個以上的 x 字元皆符合。 ² x?:x 再任何一個字元皆符合,如 x1、xa、xt 等等皆符合。 表 11-2 常用的正規表示式
|
翻轉工作室:粘添壽
Linux 伺服器系統管理 - CentOS:
翻轉電子書系列:
|