grep命令詳解

2021-09-21 01:55:03 字數 3791 閱讀 5041

grep命令是文字搜尋命令,它可以正規表示式搜尋文字,也可從乙個檔案中的內容作為搜尋關鍵字。

grep的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到標準輸出,不影響原檔案內容。

語法:

grep [option] pattern file
引數:用於過濾/搜尋的特定字元。可使用正規表示式能多種命令配合使用,使用上十分靈活。

-a   --text   #不要忽略二進位制的資料。

-a《顯示行數》 --after-context=《顯示行數》 #除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。

-b --byte-offset #在顯示符合樣式的那一行之前,標示出該行第乙個字元的編號。

-b《顯示行數》 --before-context=《顯示行數》 #除了顯示符合樣式的那一行之外,並顯示該行之前的內容。

-c --count #計算符合樣式的列數。

-c《顯示行數》 --context=《顯示行數》或-《顯示行數》 #除了顯示符合樣式的那一行之外,並顯示該行之前後的內容。

-d 《動作》 --directories=《動作》 #當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep指令將回報資訊並停止動作。

-e《範本樣式》 --regexp=《範本樣式》 #指定字串做為查詢檔案內容的樣式。

-e --extended-regexp #將樣式為延伸的普通表示法來使用。

-f《規則檔案》 --file=《規則檔案》 #指定規則檔案,其內容含有乙個或多個規則樣式,讓grep查詢符合規則條件的檔案內容,格式為每行乙個規則樣式。

-f --fixed-regexp #將樣式視為固定字串的列表。

-g --basic-regexp #將樣式視為普通的表示法來使用。

-h --no-filename #在顯示符合樣式的那一行之前,不標示該行所屬的檔名稱。

-h --with-filename #在顯示符合樣式的那一行之前,表示該行所屬的檔名稱。

-i --ignore-case #忽略字元大小寫的差別。

-l --file-with-matches #列出檔案內容符合指定的樣式的檔名稱。

-l --files-without-match #列出檔案內容不符合指定的樣式的檔名稱。

-n --line-number #在顯示符合樣式的那一行之前,標示出該行的列數編號。

-q --quiet或--silent #不顯示任何資訊。

-r --recursive #此引數的效果和指定「-d recurse」引數相同。

-s --no-messages #不顯示錯誤資訊。

-v --revert-match #顯示不包含匹配文字的所有行。

-v --version #顯示版本資訊。

-w --word-regexp #只顯示全字符合的列。

-x --line-regexp #只顯示全列符合的列。

-y #此引數的效果和指定「-i」引數相同。

規則表示式:

^  #錨定行的開始 如:'^grep'匹配所有以grep開頭的行。

$ #錨定行的結束 如:'grep$'匹配所有以grep結尾的行。

. #匹配乙個非換行符的字元 如:'gr.p'匹配gr後接乙個任意字元,然後是p。

* #匹配零個或多個先前字元 如:'*grep'匹配所有乙個或多個空格後緊跟grep的行。

.* #一起用代表任意字元。

#匹配乙個指定範圍內的字元,如'[gg]rep'匹配grep和grep。

[^] #匹配乙個不在指定範圍內的字元,如:'[^a-fh-z]rep'匹配不包含a-r和t-z的乙個字母開頭,緊跟rep的行。

\(..\) #標記匹配字元,如'\(love\)',love被標記為1。

\< #錨定單詞的開始,如:'\#錨定單詞的結束,如'grep\>'匹配包含以grep結尾的單詞的行。

x\ #重複字元x,m次,如:'0\'匹配包含5個o的行。

x\ #重複字元x,至少m次,如:'o\'匹配至少有5個o的行。

x\ #重複字元x,至少m次,不多於n次,如:'o\'匹配5--10個o的行。

\w #匹配文字和數字字元,也就是[a-za-z0-9],如:'g\w*p'匹配以g後跟零個或多個文字或數字字元,然後是p。

\w #\w的反置形式,匹配乙個或多個非單詞字元,如點號句號等。

\b #單詞鎖定符,如: '\bgrep\b'只匹配grep。

使用例項:例項1:查詢指定程序

命令:ps -ef | grep svn

輸出:

說明:第一條記錄是查詢出的程序;第二條結果是grep程序本身,並非真正要找的程序。

例項2:查詢指定程序個數

命令:ps -ef|grep -c svn

輸出:

命令:grep -f test file

輸出:

命令:grep -f test -n file

輸出:

命令:grep 快樂程式設計師 file

命令:grep php file file1

輸出:

說明:多檔案時,輸出查詢到的資訊內容行時,會把檔案的命名在行最前面輸出並且加上":"作為標示符

例項7:grep不顯示本身程序

命令:ps -ef | grep svn | grep -v 「grep」

輸出:

例項8:找出以」快樂」開頭的行內容

命令:grep ^快樂 file

輸出:

例項9:找出以非」快樂」開頭的行內容

命令:grep [快樂] file

輸出:

grep可用於shell指令碼,grep通過返回乙個狀態值來說明搜尋的狀態,

結果{0:成功,1:不成功,2:搜尋的檔案不存在}

grep命令詳解

grep命令是linux下的行過濾工具,其引數繁多,下面就一一介紹個個引數的作用,希望對大家有所幫助。grep print lines matching a pattern 將符合樣式的該行列出 語法 grep options pattern file.grep用以在file內文中比對相對應的部分,...

grep命令詳解

一 簡介 grep 是一種強大的 文字搜尋工具 它能使用正規表示式搜尋文字,並把匹配的行列印出來。unix的grep家族包括 grep egrep 和fgrep egrep 和fgrep 的命令只跟grep有很小不同。egrep是grep的擴充套件,支援更多的re元字元,fgrep就是fixed g...

grep 命令詳解

linux grep命令 1.作用 linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。2.格式 grep opt...