在做搜尋條件的時候,有時候想找尋某個檔案,但只記得他的內容關鍵字,這時候正規表示法就非常方便,下關鍵字達到找尋最接近的結果。
grep
全名為 global regular expression print
。
[root@localhost ~]# grep [參數] [關鍵字] [檔案或目錄]
-A [行數]
(After)顯示符合的那一行,同時顯示該行之後的內容。-a
以二進位的檔案作為搜尋。-B [行數]
(Before)顯示符合的那一行,同時顯示該行即之前的內容。-b
顯示符合條件的結果,總共多少 bytes。-C [行數]
(Context)顯示符合的那一行及前後內容。-c
顯示符合條件的總行數。-d [動作]
查詢目錄(忽略檔案)。-E
(Extend)使用正則表示式搜尋。-e [符合條件的內容]
指定搜尋的檔案,通常用在避免partern用-
開始。-F
符合條件的內容作為固定字串的列表。-f [範本檔案]
指定符合條件的內容,並且將每一行套用樣式。-G
將樣式視為基本的正規表示法。-H
在每個符合樣式的行,前面加上符合的檔案名稱或路徑。-h
同 -H
,但輸出不顯示路徑。-i
(ignore case)不區分大小寫。-L
不符合條件內容的檔案名稱。-l
符合條件內容的檔案名稱。-n
(number)顯示符合條件的行數及路徑。-o
顯示被模式比對到的條件。-q
不顯示任何結果。-r
遞迴,讀取每個目錄底下的檔案,同 -d recsuse
。-s
不顯示錯誤訊息或無法讀取的訊息。-V
(Version) 顯示 grep 版本資訊。-v
(recursive)顯示不符合條件的結果。-w
只顯示文字完全符合的結果。-x
只顯示全列都符合的列--help
尋求幫助。
正規表示法中的特殊符號,與原意思不相同,他們都有各自使用方式。
特殊符號 | 說明 |
---|---|
^ | 搜尋規則前的「起頭」。意思代表「非」。 |
$ | 搜尋規則後的「結尾」。 |
. | 任意一個字元。 |
* | 任意字元或任意字串,長度可以為0 |
.* | 一起使用代表任意字串。 |
\ | 跳脫字符,將字串中特殊符號的動作去除。 |
+ | 一個或多個重複字元 |
? | 匹配正則表達式的結束行 |
(n,m) | 連續 n 個 到 m個的字串。 |
< | 從比對正則表達式的行開始。 |
> | 到比對正則表達式的行結束。 |
[] | 比對範圍內的字元或字串。 |
[^] | 比對不再指定範圍內的字元。 |
[-] | 範圍 ;如[A-Z]即A,B,C一直到Z都符合要求 |
特殊符號 | 代表意義 |
---|---|
[:alnum:] | 英文大小寫字元及數字,亦即 0-9, A-Z, a-z |
[:alpha:] | 任何英文大小寫字元,亦即 A-Z , a-z |
[:blank:] | 空白鍵與 [Tab] 按鍵兩者 |
[:cntrl:] | 鍵盤上面的控制按鍵,亦即包括 CR, LF, Tab, Del.. 等等 |
[:digit:] | 數字而已,亦即 0-9 |
[:graph:] | 除了空白字元 (空白鍵與 [Tab] 按鍵) 外的其他所有按鍵 |
[:lower:] | 小寫字元,亦即 a-z |
[:print:] | 任何可以被列印出來的字元 |
[:punct:] | 標點符號 (punctuation symbol),亦即:" ' ? ! ; : # $... |
[:upper:] | 大寫字元,亦即 A-Z |
[:space:] | 任何會產生空白的字元,包括空白鍵, [Tab], CR 等等 |
[:xdigit:] | 16 進位的數字類型,因此包括: 0-9, A-F, a-f 的數字與字元 |
多檔案或目錄搜尋
[root@localhost ~]# grep [參數] [關鍵字] [檔案或目錄1] [檔案或目錄2] [檔案或目錄3] ...
搜尋的關鍵字,以顏色特別標註 --color
[root@localhost ~]# grep [參數] [關鍵字] --color [檔案或目錄]
遞迴尋找 root
目錄下的檔案,須符合 美女
的字串。
[root@localhost ~]# grep -r "美女" /root/
/root/demo.sh: echo "美女您好"