1. 程式人生 > >Linux常用命令——grep

Linux常用命令——grep

nag 去掉 一行 版本信息 如果 行數 att 是你 proc

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 顯示軟件版本信息

案例文件:
技術分享圖片
案例一:
參數舉例
技術分享圖片
技術分享圖片
技術分享圖片
註意:自己測試一些含有正則表達式的檢索,發現 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\w*p‘ 匹配以 G 後跟零個或多個文字或數字字符,然後是p
\W w 的反置形式,匹配一個非單詞字符 如:點號句號等。\W* 則可匹配多個
\b 單詞鎖定符 如: ‘\bgrep\b‘ 只匹配 grep,即只能是 grep 這個單詞,兩邊均為空格

案例三:
常見用法
技術分享圖片
技術分享圖片
技術分享圖片
註意:去掉空行與註釋行
案例四:
遞歸搜索文件
技術分享圖片
技術分享圖片
案例五:
grep搜索結果中包括或者排除指定文件
1.--exclude 在搜索結果中排除等號後所有文件
技術分享圖片
2.--exclude-from 在搜索結果中排除filelist文件列表裏的文件
技術分享圖片
3.--include 只在所指定的目錄文件中遞歸搜索字符 " and "
技術分享圖片
案例六:
使用0值字節後綴的 grep 與 xargs
技術分享圖片
註意:-Z 參數個人理解為取消換行符"以一行的形式顯示內容",xargs -0 是來解決不能"以一行的形式執行顯示內容“傳參這個問題的,-Z通常和-l結合使用。(-Z選項來指定以0值字節作為終結符文件名(\0),xargs -0 讀取輸入並用0值字節終結符分隔文件名)
案例七:
打印出匹配文本之前或者之後的行
技術分享圖片
技術分享圖片
註意:如果匹配結果有多個,會用 " -- " 作為各匹配結果之間的分隔符,如果多個結果顯示的行數相連或重疊則不會顯示 " -- " 分隔符

Linux常用命令——grep