linux grep命令詳解

2021-09-27 08:30:49 字數 3606 閱讀 7837

1.作用

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

2.格式

grep [options] pattern [file...]

3.主要引數

[options]主要引數:

-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   對資料夾進行遞迴查詢 但是對軟連線的檔案只有在命令裡面才檢索 

-r和-r 類似 包含了軟連線檢索

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

-v或--revert-match   反轉查詢。

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

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

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

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

--help4.grep命令使用簡單例項

$ grep 『test』 d*

顯示所有以d開頭的檔案中包含 test的行。

$ grep 『test』 aa bb cc

顯示在aa,bb,cc檔案中匹配test的行。

$ grep 『[a-z]\』 aa

顯示所有包含每個字串至少有5個連續小寫字元的字串的行。

$ grep 『w\(es\)t.*\1′ aa

如果west被匹配,則es就被儲存到記憶體中,並標記為1,然後搜尋任意個字元(.*),這些字元後面緊跟著 另外乙個es(\1),找到就顯示該行。如果用egrep或grep -e,就不用」\」號進行轉義,直接寫成』w(es)t.*\1′就可以了。

5.grep命令使用複雜例項

假設您正在』/usr/src/linux/doc』目錄下搜尋帶字元 串』magic』的檔案:

$ grep magic /usr/src/linux/doc/*

sysrq.txt:* how do i enable the magic sysrq key?

sysrq.txt:* how do i use the magic sysrq key?

其中檔案』sysrp.txt』包含該字串,討論的是 sysrq 的功能。

預設情況下,』grep』只搜尋當前目錄。如果 此目錄下有許多子目錄,』grep』會以如下形式列出:

grep: sound: is a directory

這可能會使』grep』 的輸出難於閱讀。這裡有兩種解決的辦法:

明確要求搜尋子目錄:grep -r

或忽略子目錄:grep -d skip

如果有很多 輸出時,您可以通過管道將其轉到』less』上閱讀:

$ grep magic /usr/src/linux/documentation/* | less

這樣,您就可以更方便地閱讀。

有一點要注意,您必需提供乙個檔案過濾方式(搜尋全部檔案的話用 *)。如果您忘了,』grep』會一直等著,直到該程式被中斷。如果您遇到了這樣的情況,按 ,然後再試。          

下面還有一些有意思的命令列引數:

grep -i pattern files :不區分大小寫地搜尋。預設情況區分大小寫,

grep -l pattern files :只列出匹配的檔名,

grep -l pattern files :列出不匹配的檔名,

grep -w pattern files :只匹配整個單詞,而不是字串的一部分(如匹配』magic』,而不是』magical』),

grep -c number pattern files :匹配的上下文分別顯示[number]行,

grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,

grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。

grep -n pattern files  即可顯示行號資訊

grep -c pattern files  即可查詢總行數

linux grep命令詳解

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

linux grep命令詳解

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

linux grep命令詳解

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