Linux grep/egrep命令詳解

原文鏈接:https://www.cnblogs.com/ftl1012/p/grep.html

grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹 配的行打印出來

grep搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。

grep的規則表達式(正則一定要轉義)

1

2

3

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

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

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

[]   #匹配一個指定範圍內的字符,如'[Gg]rep'匹配Grep和grep。   

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

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

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

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

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

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

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

\w    #匹配文字和數字字符,也就是[A-Za-z0-9],

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

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

grep常見命令參數

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

-n  打印行號

    grep -n ".*" h.txt        所有打印行號

    grep -n "root" h.txt    匹配的內容顯示行號

-v  不包括

-E  表示過濾 多個參數

    grep -Ev "sshd|network|crond|sysstat|"

-o:僅打印你需要的東西,默認打印正行

     grep -o "hello" h.txt

-i:忽略大小寫

    grep -i "hello" h.txt

-c: 用於統計文中出現的次數

--color=auto  過濾字段添加顏色

    利用正則打印特定字符

\b:作爲邊界符,邊界只包含特定字符的行

    grep "\boldboy\b" /etc/passwd   -->只過濾包含oldboy的行

Linux egrep命令詳解

1

2

3

4

egrep: == grep -E 用於顯示文件中符合條件的字符

          env|egrep "USER|MAIL|PWD|LOGNAME"

          用的表達式不一樣 ,egerp更加規範

egrep -o "oldboy|hello" h.txt   -->僅僅輸出 oldboy 和 hello

常用的命令展示

查找指定關鍵字個數

1

grep '\bboot\b' logs_bak.txt 【\b單詞鎖定符,只匹配boot】

image

輸出logs_bak.txt 文件中含有從logs.txt文件中讀取出的關鍵詞的內容行

1

2

3

cat logs_bak.txt

    cat logs.txt

    cat logs.txt | grep -nf logs_bak.txt

image

從多個文件中查找關鍵詞

1

grep "omc" /etc/passwd /etc/shadow 【多文件查詢時,會用冒號前添加文件名】

image

打印IP信息

1

ifconfig eth0|grep -E "([0-9]{1,3}\.){3}" 【-E 表達式匹配,用小括號括起來表示一個整體】

image

同時過濾多個關鍵字

1

2

cat /etc/passwd|grep -E "boy|omc"

   ==> cat /etc/passwd|egrep "omc|boy" 【用 | 劃分多個關鍵字】

image

顯示當前目錄下面以.txt 結尾的文件中的所有包含每個字符串至少有7個連續小寫字符的字符串的行

1

2

grep '\w\{7\}' *.txt

   ==> grep '[a-z]\{7\}' *.txt 【注意特殊字符的轉義】

image

        上下文的控制(瞭解)           

1

2

3

4

# A   查詢匹配內容的一行之外,後n行的顯示

    # B   查詢匹配內容的一行之外,前n行的顯示

    # C   查詢匹配內容的一行之外,顯示上下n行

grep -n 'yum' -A 3 logs_bak.txt

image

作者:小a玖拾柒

出處:http://www.cnblogs.com/ftl1012/

-------------------------------------------

個性簽名: 所有的事情到最後都是好的,如果不好,那說明事情還沒有到最後~

本文版權歸作者【小a玖拾柒】和【博客園】共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章