Linux 伺服器系統管理第十一章 外殼進階操作  上一頁    下一頁

11-5 過濾器

內容:

11-5-1 過濾命令彙集

Unix/Linux 系統最有價值的是,外殼程式是自由發展出來的,許多特殊工具也在此情況下被大量發展出來。接下來,我們來探討一些特殊文件處理的工具,它們常被統稱為『過濾器』(Filter)。過濾器從標準輸入(或轉向輸入)取得一串資料,以某種方式轉換(或處理),並將結果送到標準輸出(或轉向輸出),其運作方式如圖 11-3 所示。表 11-1 為較常使用的過濾器工具,接下來幾節(第 11-7 ~ 11-9 節)將介紹一些較常用且較複雜過濾器的操作方式;本節先介紹一些過濾器共同操作方法。

 

11-3 過濾器功能

11-1 Unix/Linux 常用過濾器命令

過濾器

     

cat

concatenate)。連結並顯示文字。

comm

compare)。比較排序過的檔案。

crypt

encryption)。將資料加密編碼或解密。

cut

從輸入列剪下某些欄位。

diff

differences)。兩檔案之間以行對行比較並顯示不同處。

egrep

使用完整的正規表示式搜尋式樣文字。

fgrep

使用字元字串搜尋文字。

grep

使用式樣搜尋文字。

head

顯示檔案的開頭部份。

less/more

顯示文字,一次一個畫面。

nl

將每一行編號。

paste

將文字行合併。

pg

顯示文字,一次一個畫面。

pr

格式化列印文字。

sort

排序文字。

spell

檢查拼字錯誤。

tail

顯示檔案中最後的部分。

tr

translate)。轉換文字。

uniq

顯示檔案中的唯一行,移除重複內容的行。

wc

word count)計算檔案中的行數、字元數。

11-5-2 聚集過濾器

單一命令的過濾器功能並沒有辦法顯現出來有何特殊,Unix/Linux 過濾器可貴的地方,就在於利用管道(pipeline|)將許多過濾器命令結合在一起,其處理能力不容小觀。譬如,$ cat /etc/passwd | sort | more,表示 /etc/passwd 檔案內容經由 sort 命令過濾後,再傳送給 more,操作範例如下:

$ cat /etc/passwd | sort | more

adm:x:3:4:adm:/var/adm:/sbin/nologin

amanda:x:33:6:Amanda user:/var/lib/amanda:/bin/bash

apache:x:48:48:Apache:/var/www:/sbin/nologin

….

csu020:x:518:518::/home/csu020:/bin/bash

csu021:x:519:519::/home/csu021:/bin/bash

--More--

11-5-3 正規表示式

簡單的說,過濾器即是一個檔案(或一連串資料)經過某一特殊功能處理之後,得到所需要的訊息。比如說,檢蒐文件內是否拼字錯誤、替換文件內某一語句、選取某一特殊字元資料、或剪接某片段文字訊息等等。也許讀者會認為這些文件處理工具,應該與系統操作沒有任何關係,而與一般文書處理事務較有關才對;但為何這些過濾器會被號稱為 Unix/Linux 系統最傲人的工具呢?讀者可以試著想看看,如果我們想要了解目前系統狀況,也許必須輸入某些命令來觀察,譬如,輸入 ps 命令觀察系統目前有哪些程序在執行、輸入 nstat 命令觀察目前有哪些網路傳輸埠口被開啟、輸入 who 命令觀察目前有哪些使用者登入系統、甚至必須隨時隨地去閱讀『日誌檔案』(Log file),是否有使用者越權的存取狀態等等。當執行這些命令時,大多會出現一連串的大筆資料,我們再仔細的閱讀這些資料,從中找出所期望的訊息,如此一來,會出現兩個問題:

Ø  人工檢蒐文件容易疏忽遺漏

Ø  必須隨時隨地下達系統管理命令,並檢視其執行結果

過濾器除了方便操作系統之外,解決上述兩大問題才是它的主要目的。我們可以依照某些特殊需要,編寫 Shell 程式(第七章介紹),其中包含過濾器,並可設定成定期執行程式(cron,第十二章介紹),如此便可以解決上述兩大問題(第十八章介紹)。

既然要由搜尋文件中,焠鍊出所需要的資訊,那應該如何表示所要搜尋的文字(或稱字串,Pattern)?這是一件很大的學問。搜尋文件不可能指定某一字元(或字串),譬如,僅在文件中尋找『RedHat』,而將其替換成『Fedora』,這種過濾功能太為簡單了(但也有許多地方僅這樣用),也沒什麼萃取功能。一般所欲尋找的字串大多是有一些共通性,甚至模糊相似的地方。我們利用這些模糊相似的字串,作為搜尋的依據,如此才能找出較精煉的資訊。而 Unix/Linux 利用工業領域裡常用的『正規表示式』(Regular expression)來表示資料之間共通模糊相似的地方。表 11-2 為較常用的正規表示式,Unix/Linux 系統的各種搜尋、編輯工具都會使用到這些表示法,如 grepcutpastesedawk等等文字處理工具。在爾後幾個章節裡,讀者將會看到這些表示式的使用範例。簡略說明如下:

²  ^Text:一列開始是 Text 字串。

²  Text$:一列的結尾是 Text 字串。

²  [xyz]xy、或 z 字元皆符合。

²  x1|y2x1 y2 字串皆符合。

²  x*:一個以上或沒有 x 字元皆符合。

²  x+:一個以上的 x 字元皆符合。

²  x?x 再任何一個字元皆符合,如 x1xaxt 等等皆符合。

11-2 常用的正規表示式

符號

意義

範例

符合字串

.

任何一個字元

chi.

chil, chid

*

任何空白或一個以上的字元

te*ch

tech, teach

[]

符合任何在中括號內出現的字元

[Tt]ea

Tea, tea

[a-z]

符合任何範圍內的字元

[A-Za-z]

任何字元

^

一列的開始

^The

一列開始是 The 字串

$

一列的結尾

book$

結尾是 book 字串

 

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: