探索grep命令

2022-05-16 02:20:51 字數 3478 閱讀 6458

grep是linux的一款搜尋工具,基本啥linux版本都有自帶此工具。下面部分引數若沒有說明,表示功力不夠,理解不了。

-e正規表示式(相當於egrep命令)

-f將pattern當作純文字,純字串匹配(相當於fgrep命令)

-g基礎表示式(預設的,不需指定)

-pperl正規表示式

-e patternpattern就是要匹配的模式串(預設,不需指定)

-f filename模式串在檔案中給出

-i忽略大小寫

-v反轉匹配,就是選中那些沒匹配到的行

-w匹配整個詞

-x匹配整行

-c統計匹配了多少行

--color=when什麼時候顯示顏色,when可以是never、always、auto(不過顏色是由環境變數grep_colors定義的),一般用auto即可

-l輸出乙個沒有任一行被匹配到的檔名(最多僅輸出乙個檔名,輸出後立即停止搜尋)

-l輸出乙個至少有一行被匹配到的檔名(注意點同上)

-m num指定每個檔案只輸出幾行,即最多在搜出num行後就停止這個檔案的搜尋

-o只輸出行中匹配到的部分,而不是輸出整行

-q不輸出任何東西?連錯誤都不輸出,很奇怪的引數

-s不輸出錯誤資訊,包括檔案不存在、不可讀檔案等產生的錯誤

-b

-h每次匹配到就列印檔案名(在輸入檔案個數為1時就是預設項)

-h省去檔名的字首(檔案的位置比較深,字首比較長時有用)

--label=label

-n順便列印出匹配到的模式在檔案中的行號

-t

-u報告unix風格的位元組偏移(win系統才有用)

-z列印null字元

-a num輸出的每個匹配行之後多輸出num行上下文

-b num和-a同理,就是在匹配行之前的上下文而已

-c num輸出num行上下文,估計是包括上文和下文

-a按二進位制處理檔案

--binary-files=type如果type是text,就相當於-a

-d action如果輸入檔案是個裝置、fifo、socket,就以action來處理它,可以是skip、read(預設)

-d action如果輸入的是目錄,則以action來處理它, action可以是skip、recurse、read(預設)

--exclude=glob忽略那些檔名能被glob匹配中的檔案

--exclude-from=file同上,只是將多個glob寫在檔案中,匹配中其中乙個glob都會被忽略

--exclude-dir=dir忽略指定目錄,dir也是個模式串,目錄可以是遞迴的(就是說可以是某個目錄下的目錄名)

-i

--include=glob只搜尋那些檔名被glob匹配的檔案

-r遞迴搜尋所有檔案(預設是只搜當前一層檔案),不考慮符號鏈結

-r同-r,但是考慮符號鏈結

--mmap如果可能的話,用系統呼叫mmap()來讀取輸入檔案,而不是用read()

-u將輸入檔案作為二進位制處理,一般在win系統中會去讀檔案前32kb來判斷檔案型別(不是win系統則選項無效)

1、如果輸入多個檔案,可以用管道符|,grep匹配的就是檔名了,輸出的也是檔名,比如:

ls | grep "int"

如果輸入的只有單個檔案,grep匹配的就是檔案中的行了,比如:

grep "int" test.txt

如果輸入多個檔案,又要匹配每個檔案中的行,那就要配合xargs命令了,如:

ls | xargs grep "int"

如果不想用xargs,也可以在最後面加上要匹配的檔名規則,grep就知道你要匹配的是行,如:

ls | xargs grep "int" *.txt

2、如果輸入的是多個檔案,可以直接將檔案名列出來,如:

grep "int" a.cpp b.cpp d.cpp g.cpp

如果要在多個檔案中指定部分檔案作為輸入,可以用萬用字元*等來匹配檔名,如:

grep "int" *.cpp

當然,管道符也是可以照樣用的,這樣它就不是從本目錄搜檔案,而是從輸入中搜檔案,如:

ls | grep "int" *.cpp

3、grep預設是匹配串的,就是只要匹配到就能輸出,如果要匹配整個單詞,可以用-w,如:

grep -w "int" *.cpp

如果要匹配整個行,可以用-x,如:

grep -x "int" *.cpp

反轉匹配一下試試,如:

grep -vx "int" *.cpp

忽略一下大小寫,如:

grep -ivx "int" *.cpp

4、如果想統計某檔案中匹配到幾個,可以用-c,如:

grep -c "static" *.cpp

有顏色的話看起來顯眼一些,如:

grep --color=auto "static" *.cpp

如果想知道哪些檔案中不含指定關鍵字,可以用-l,只輸出檔名,如:

grep -l --color=auto "static" *.cpp

5、搜尋多個關鍵字,匹配其中乙個就輸出,如:

grep "std\|abc\|oom" * -rni

未完待續。。。

grep命令介紹

grep print lines matching a pattern grep options pattern file.grep options e pattern f file file.grep用以在file內文中比對相對應的部分,或是當沒有指定檔案時,由標準輸入中去比對。在預設的情況下,g...

grep命令應用

linux kill多個程序的妙招 案例 kill local no 經常需要kill多個程序,如果這些程序有共同的特點,就可以用一條命令kill掉它們。比如清除oracle資料庫的所有遠端連線程序 ps efww grep local no grep v grep cut c 9 15 xargs...

grep命令總結

1.作用 grep命令可以指定檔案中搜尋特定的內容,並將含有這些內容的行標準輸出。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。2.格式 grep options 3.主要引數 options 主要引數 c 只輸出...