grep 文本過濾工具
語法格式:grep 【options】【pattern】【file】 grep [參數] [匹配模式] [查找的文件]
注意:
1.grep 是 Linux 系統中最重要的命令之一,其功能是從文本文件或管道數據流中篩選匹配的行及數據。
2.grep 命令里的匹配模式或模式匹配,都是你要好找的東西,可以是普通的文字符號也可以是正則表達式。
參數選項:
參數 說明
-c 計算找到‘搜索字符串’的行數
-o 指數出匹配的內容
-i 不區分大小寫
-n 顯示匹配內容的行號
-r 當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep命令將回報信息並停止動作
-v 反向選擇,即沒有‘搜索字符串’內容的行
-l 列出文件內容符合指定的范本樣式的文件名稱
-E 擴展 grep,即 egrep,可以使用擴展正則表達式
--color=auto 搜索關鍵詞顯示顏色
-V 顯示軟件版本信息
案例文件:

案例一:
參數舉例
參數 -c、-o、-i 舉例

參數 -n 舉例

注意:自己測試一些含有正則表達式的檢索,發現 egrep 可以實現的,grep 也可以實現。但例如:egrep -v "^$|#" file1.txt ,grep 就實現不了,是因為 egrep 增加了額外的正則表達式元字符集的效果,而對於標准grep,這時在擴展元字符前面加 \ ,grep 便會自動啟用擴展選項-E

案例二:
grep正則表達式元字符集
字符集 說明 案例
^ 錨定行的開始 如:'^grep' 匹配所有以 grep 開頭的行
$ 錨定行的結束 如:'grep$' 匹配所有以 grep 結尾的行
. 匹配一個非換行符的字符 如:'gr.p' 匹配 gr 后接一個任意字符,然后是 p
- 匹配零個或多個先前字符 如:' grep' 匹配所有一個或多個空格后緊跟 grep 的行。 . 一起用代表任意字符
[ ] 匹配一個指定范圍內的字符 如:'[Gg]rep' 匹配 Grep 和 grep
[^ ] 匹配一個不在指定范圍內的字符 如:'[^A-FH-Z]rep' 匹配不包含 A-F 和 H-Z 的一個字母開頭,緊跟 rep 的行
(..) 標記匹配字符 如:'(love)',love 被標記為1
< 錨定單詞的開始 如:'<grep' 匹配包含以grep開頭的單詞的行
> 錨定單詞的結束 如:'grep>' 匹配包含以grep結尾的單詞的行
x{m} 連續重復字符 x,m 次 如:'o{5}' 匹配包含連續5個o的行
x{m,} 連續重復字符 x,至少 m 次 如:'o{5,}' 匹配至少連續有5個 o 的行
x{m,n} 連續重復字符 x,至少 m 次,不多於 n 次 如:'o{5,10}' 匹配連續 5-10 個 o 的行
\w 匹配一個文字和數字字符也就是 [A-Za-z0-9] 如:'G\wp' 匹配以 G 后跟零個或多個文字或數字字符,然后是p
\W w 的反置形式,匹配一個非單詞字符 如:點號句號等。\W 則可匹配多個
\b 單詞鎖定符 如: '\bgrep\b' 只匹配 grep,即只能是 grep 這個單詞,兩邊均為空格
案例三:
常見用法
字符集 ^、<、\ \ 舉例

命令 grep 在文件中查找字符

參數 -l 的使用

命令 egrep 與參數 -v 的及字符集的使用舉例

注意:去掉空行與注釋行
案例四:
遞歸搜索文件,參數 -r、-e、-o、-n 的使用舉例


案例五:
grep搜索結果中包括或者排除指定文件
1.--exclude 在搜索結果中排除等號后所有文件

2.--exclude-from 在搜索結果中排除filelist文件列表里的文件

3.--include 只在所指定的目錄文件中遞歸搜索字符 " and "

案例六:
使用 0 值字節后綴的 grep 與 xargs

注意:-Z 參數個人理解為取消換行符"以一行的形式顯示內容",xargs -0 是來解決不能"以一行的形式執行顯示內容“傳參這個問題的,-Z通常和-l結合使用。(-Z選項來指定以0值字節作為終結符文件名(\0),xargs -0 讀取輸入並用0值字節終結符分隔文件名)
案例七:
打印出匹配文本之前或者之后的行
參數 -A、-B、-C 的使用舉例

注意:如果匹配結果有多個,會用 " -- " 作為各匹配結果之間的分隔符,如果多個結果顯示的行數相連或重疊則不會顯示 " -- " 分隔符
