linux學習筆記 grep

2022-05-18 15:46:32 字數 3067 閱讀 9944

先來講講grep(搜尋過濾)

1.命令格式:

grep [option] pattern file

2.命令引數:

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

-a《顯示行數》          除了顯示符合範本樣式的那一行之外,並顯示該行之後的內容    grep -a 5 可以顯示匹配內容以及後面的5行內容

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

-b 顯示行數             除了顯示符合樣式的那一行之外,並顯示該行之前的內容   grep -b 5 可以顯示匹配內容以及前面的5行內容

-c            計算符合樣式的行數

-c《顯示行數》          除了顯示符合樣式的那一行之外,並顯示該行之前後的內容  grep -c 5 可以顯示匹配內容以及前後面的5行內容

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

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

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

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

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

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

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

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

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

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

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

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

-q             #不顯示任何資訊。   

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

-s           #不顯示錯誤資訊。   

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

-v           #顯示版本資訊。   

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

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

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

3.grep的正規表示式:

^  #錨定行的開始 

$  #錨定行的結束

.  #匹配乙個非換行符的字元

*  #匹配零個或多個先前字元

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

#匹配乙個指定範圍內的字元

[^]  #匹配乙個不在指定範圍內的字元

\(..\)  #標記匹配字元

\<      #錨定單詞的開始

\>      #錨定單詞的結束

x\  #重複字元x,m次

x\  #重複字元x,至少m次

x\  #重複字元x,至少m次,不多於n次

\w    #匹配字母和數字字元

\w    #\w的反置形式,匹配乙個或多個非單詞字元

\b    #單詞鎖定符

[:alnum:]    #文字數字字元   

[:alpha:]    #文字字元   

[:digit:]    #數字字元   

[:graph:]    #非空字元(非空格、控制字元)   

[:lower:]    #小寫字元   

[:cntrl:]    #控制字元   

[:print:]    #非空字元(包括空格)   

[:punct:]    #標點符號   

[:space:]    #所有空白字元(新行,空格,製表符)   

[:upper:]    #大寫字元   

[:xdigit:]   #十六進製制數字(0-9,a-f,a-f)

4. 擴充套件正規表示式  egrep 是 grep -e 的別名

+, 於 . * 作用類似,表示 乙個或多個重複字元。 

?, 於 . * 作用類似,表示0個或乙個字元。 

|,表示或關係,比如 'gd|good|dog' 表示有gd,good或dog的串 

(),將部分內容合成乙個單元組。 比如 要搜尋 glad 或 good 可以這樣 'g(la|oo)d' 

eg:查詢指定程序: ps -ef|grep svn

查詢指定程序個數: ps -ef|grep svn -c

搜尋有the的行,並輸出行號  grep -n 'the' regular_express.txt 

grep不顯示本身程序: ps aux|grep ssh     ps aux | grep ssh | grep -v "grep"   

找出已u開頭的行內容:  cat test.txt | grep ^u

輸出非u開頭的行內容: cat test.txt |grep ^[^u]

顯示包含ed或者at字元的內容行: cat test.txt |grep -e "ed|at"

日誌檔案過大,不好檢視,我們要從中檢視自己想要的內容,或者得到同一類資料,比如說沒有404日誌資訊的:grep '.' access1.log | grep -ev '404' > access2.log

grep '.' access1.log|grep -ev '404' > access2.log

grep '.' access1.log|grep -ev '(404|/photo/|/css/)' > access2.log

grep '.' access1.log|grep -e '404' > access2.log

上面3句命令前面兩句是在當前目錄下對access1.log檔案進行查詢,找到那些不包含404的行,把它們放到access2.log中,後面去掉』v』,即是把有404的行放入access2.log

awk 匹配數字不能用\d

Grep學習筆記

1.grep簡介 grep的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到螢幕,不影響原檔案內容。grep可用於shell指令碼,因為grep通過返回乙個狀態值來說明搜尋的狀態,如果模板搜尋成功,則返回0,如果搜尋不成...

Grep學習筆記

1.grep正規表示式元字符集 基本集 錨定行的開始 如 grep 匹配所有以grep開頭的行。錨定行的結束 如 grep 匹配所有以grep結尾的行。匹配乙個非換行符的字元 如 gr.p 匹配gr後接乙個任意字元,然後是p。匹配零個或多個先前字元 如 grep 匹配所有乙個或多個空格後緊跟grep...

Grep學習筆記

table of contents 1.grep簡介 2.grep正規表示式元字符集 基本集 3.用於egrep和 grep e的元字元擴充套件集 4.posix字元類 5.grep命令選項 6.例項 grep的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板...