grep
是linux的一款搜尋工具,基本啥linux版本都有自帶此工具。下面部分引數若沒有說明,表示功力不夠,理解不了。
-e
正規表示式(相當於egrep命令)
-f
將pattern當作純文字,純字串匹配(相當於fgrep命令)
-g
基礎表示式(預設的,不需指定)
-p
perl正規表示式
-e pattern
pattern就是要匹配的模式串(預設,不需指定)
-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 只輸出...