grep (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。 Unix的grep家族包括grep、egrep和fgrep。 egrep和fgrep的指令只跟grep有很小不同。 egrep是grep的擴展,支援更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義,不再特殊。 Linux使用GNU版本的grep。它功能更強,可以透過-G、-E、-F命令列選項來使用egrep和fgrep的功能。
grep的工作方式是這樣的,它在一個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被視為檔案名稱。搜尋的結果送到螢幕,不影響原文件內容。
grep可用於shell腳本,因為grep透過傳回狀態值來說明搜尋的狀態,如果範本搜尋成功,則傳回0,如果搜尋不成功,則傳回1,如果搜尋的檔案不存在,則傳回2。我們利用這些回傳值就可進行一些自動化的文字處理工作。
grep --help
匹配模式選擇:
-E, --extended-regexp 擴展正規表示式egrep
-F, --fixed-strings basic-regexp 基本正則
-P, --perl-regexp 呼叫的perl正則
-e, -- 從文件中取得配對模式
-i, --ignore-case 不區分大小寫
-w, --word-regexp 配對整個字
-x, -- 一個0 位元組的資料行,但不是空白行
雜項:
-s, --no-messages 不顯示錯誤訊息
-v, --invert-match 顯示版本號碼
- -help 顯示協助資訊
--mmap count=NUM 配對的最大數
-b, --byte-offset 列印配對行前面列印該行所在的區塊號碼。
-n, --line-number 顯示的加上符合所在的行號
--line-buffered -h, --no-filename 當搜尋多個檔案時,不顯示符合檔案名稱前綴
--label=LABEL TERN 的部分
-q, --quiet, --silent 不顯示任何東西
--binary-files=TYPE 假定二進位檔案的TYPE 類型; TYPE 可為`binary', `text', 或`without-match'
-a, --text 搭配二進位的東西
-I 目錄操作,讀取,遞歸,跳過
-D, --devices=ACTION 設定對設備, FIFO,管道的操作,讀取,跳過
-R, -r, --recursive 遞歸呼叫
--include=PATTERN 只尋找符合FILE_PATTERN 的檔案
--exclude=PATTERN 跳過符合FILE_PATTERN 的檔案與目錄
--exclude-from=FILE 跳過所有除FILE 以外的檔案
-L, --files-without-match 當符合多個檔案時,顯示不符合多個檔案時,顯示不符合的檔案名稱
-l, --files-with-matches 配對多個檔案時,顯示符合的檔案名稱
-c, --count 最後列印空字符
檔案控制:
-B, --before-context=NUM 列印配對本身以及前面的幾個行由NUM控制
-A, --after-context=NUM 列印符合本身以及隨後的幾個行由NUM控制
-C, --context=NUM 列印配對本身以及隨後,前面的幾個行由NUM控制
-NUM
--colour[=WHEN ] 使用標誌高亮匹配字符串;
-U, --binary )