使用Linux文字工具簡化資料的提取(一)(轉)

BSDLite發表於2007-08-17
使用Linux文字工具簡化資料的提取(一)(轉)[@more@]  很多 Linux® 系統管理員都需要做一些整理純文字配置檔案的乏味工作。幸運的是,Linux 有很多源自於 UNIX® 的資料提取工具,包括 head、tail、grep、egrep、fgrep、cut、paste、join、awk 等。本文給出了幾個真實的例子,它們可以展示如何使用這些簡單的命令列工具更好地服務於系統管理工作。本文將逐一介紹這些資料提取工具及其操作,將它們應用到日常工作所使用的典型檔案中,並介紹一下為什麼這些工具對於從這些檔案中提取資料來說非常重要。

  Linux 作業系統中有很多檔案:配置檔案、文字檔案、文件檔案、日誌檔案、使用者檔案,這個清單還在不斷增長。通常,這些檔案都包含了要查詢重要資料所需要訪問的一些資訊。儘管我們可以簡單地使用諸如 cat、more 之類的標準工具將大部分檔案的內容輸出到螢幕上,但是系統中有更加合適的工具可以對文字進行過濾和處理,這樣就可以只關心我們想要的內容。

  在閱讀本文的過程中,您可以開啟 shell 並體驗一下每個工具的例子。

  正規表示式

  在開始之前,我們需要首先理解什麼是正規表示式,以及如何使用正規表示式。

  在最簡單的形式中,正規表示式(regular expression)是用來在檔案中定位文字的一些搜尋標準。例如,要查詢所有包含單詞 “admin” 的行,我們就可以對 “admin” 進行搜尋。因此,“admin” 就構成了一個正規表示式。如果我們不但希望查詢 “admin”,而且還想將其替換成 “root”,那麼我們就可以在一個工具中使用適當的命令將 “admin” 替換成 “root”。它們都構成了正規表示式。

  正規表示式所採用的一些基本規則如下:

  ● 任何單個字元或一串字元都可以匹配字元本身,例如上面的 “admin” 的例子。

  ● ^ 符號(^)表示一行的開始;$ 符號($)表示一行的結束。

  ● 要搜尋特殊字元(例如 $ 符號),需要在這些字元前面加上反斜線()。例如, $ 就表示查詢 $,而不是一行的末尾。
 
  ● 點(.)代表任何單個字元。例如,ad..n 代表 5 個字元項,前兩個字元是 “ad”,最後一個字元是 “n”。中間兩個字元可以是任何字元,但是隻能是由兩個字元組成。

  ● 任何時候如果正規表示式包含在斜線中(例如 /re/),搜尋就是透過檔案順序進行的。如果正規表示式包含在問號中(例如,?re?),搜尋就是透過檔案逆序進行的。

  ● 方括號([])表示多個值,減號(-)表示值的範圍。例如,[0-9] 與 [0123456789] 相同,[a-z] 就等效於搜尋任何小寫字元。如果一個列表的首字元是 ^ 符號,它就匹配不在這個清單中的任何字元。表 1 給出了這些規則是如何真正進行匹配的。

  表 1. 示例正規表示式
QUOTE:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-963512/,如需轉載,請註明出處,否則將追究法律責任。

使用Linux文字工具簡化資料的提取(一)(轉)
請登入後發表評論 登入
全部評論

相關文章