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

11-6 檔案搜尋工具

內容:

檔案搜尋工具就是在檔案(或某一串列資料)內搜尋所要的文字(或字串),這些目標文字可以直接以純文字表示,也可以利用正規式表示。基本上,搜尋工具在一般文書處理器裡常見到,譬如,viword、記事本等等。但 Shell 與文書處理兩者的搜尋工具有很大的不同,文書處理大多是將游標放置到目標字串的位置,而 Shell 是處理一連串進來的文字(無論串列資料或檔案皆是如此),找出目標字串,其中並沒有游標工具。一般找到目標字串後,通常會將該行內容顯示於終端機上,或許還會有其他的處理,但這還需要再配合其他過濾器工具。Unix/Linux 系統上常用的搜尋工具有 grepegrep fgrep,以下分別介紹之。

11-6-1 grep 搜尋工具

grepGlobal Regular Expression Print)的命令格式為:

$ grep [options] PATTERN [FILE...]

$ grep [options] [-e PATTERN | -f FILE] [FILE...]

其中常用選項(options)有:

²  - c :計算出行數。

²  -l :顯示出相符的檔名。

²  -n :顯示出相符的行號。

²  -i :忽略大小寫。

(A) 【純文字搜尋】

在檔案中尋找某一純文字字串,搜尋成功再印出該行,操作範例如下:

$ cat file_2                【觀察 file_2 內容】

This is my question.

Is this a dog or cat?

$ grep my file_2            【在 file_2 內搜尋 my 字串】

This is my question.         【找到則印出該行內容】

$ grep 'dog or cat' file_2   【在 file_2 中搜尋 ‘dog or cat’ 字串】

Is this a dog or cat?

(B) 【純文字附選項搜尋】

為了增加搜尋效益,可選擇附加某些選項,操作範例如下:

$ cat file1               【觀察 file1 內容】

Is this a book?

Yes, this is a book

$ cat file2                【觀察 file2 內容】

Where is my book?

$ grep -i T file1    【由 file1 中找出有 T 的字樣,而不論其大小寫】

Is this a book?

Yes, this is a book

$ grep -l 'Where' file1 file2 【找出 Where 字串是否在 file2 file2

file2

$ grep -li where file1 file2    【同上,但不理會大小寫】

file2

$ grep -n 'I' file1    【在 file1 中找出有 I 字串的行號】

1:Is this a book?

(C)【正規表示式搜尋】

利用正規表示式搜尋,可以找出變化性較高的字串,以下介紹幾個範例:

Ø  .』表示式:符合任何單一字元,操作範例如下:

$ cat file1

Is this a book?

Yes, this is a book

$ grep 'I.' file1       【找出 I 後面緊接著一個單一字元的字串】

Is this a book?

Ø  *』表示式:符合空白或任何長度的字元,操作範例如下:

$ grep 'Ye*' file1    【找出前面是 Ye 的任何字串或字串】

Yes, this is a book

Ø  []』表示式:符合任何中括號內的字元,操作範例如下:

$ cat file_2

This is my question.

Is this a dog or cat?

$ grep [Mm] file_2     【找出有包含有 M m 字串】

This is my question.

Ø  ^』表示式:一行的開始符合某一字串,操作範例如下:

$ grep ^This file_2       【找出行的開頭是 This 的字串】

This is my question.

Ø  $』表示式:一行的結尾符合某一字串,操作範例如下:

$ grep ?$ file_2          【找出行的結尾是 ? 的字串】

Is this a dog or cat?

 

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: