Linux命令(八)過濾文本 grep


grep 命令介紹

grep是一個強大的文本搜索工具命令,用於查找文件中符合指定格式的字符串,支持正則表達式。如不指定任何文件名稱,或是文件名為 -,則gerp命令從標准輸入設備中讀取數據。

grep 家族包括grep egrepfgrep。 egrep 和 fgrep 命令只跟 grep 有很小的不同。 egrep 是 grep 的擴展 , fgrep 就是 fixed grep 或 fast grep,該命令使用任何正則表達式中的元字符表示其自身的字面意義,不在特殊。其中 egrep 就等同於 " grep -E" ,fgrep 等同於"grep -F"。(有點暈。。) Linux中的 grep 功能強大,支持很多參數,可以方便地用來進行文本處理工作。

grep 命令常用參數說明

-a	不要忽略二進制數據
-A 	除了顯示符合條件的那一行之外,並顯示該列之后的內容

-b	在顯示符合范本樣式的那一列之前,標示出該列第一個字符的位編號
-B	除了顯示符合條件的那一行之外,並顯示該列之前的內容

-c	計算符合結果的行數
-C	除了顯示符合條件的那一行之外,並顯示該列之前后的內容

-e 	按指定的字符串查找
-E	按指定的字符串指定的正則查找

-f	指定范本文件,其內容含有一個或多范本樣式	
-F	將范本樣式視為固定的字符串列表

-G	將范本樣式視為普通的表示法來用

-h	在顯示符合范本樣式的那一列之前,不標示該列所屬的文件名稱
-H	在顯示符合范本樣式的那一列之前,標示該列所屬的文件名稱

-i	忽略字符大小寫

-l	列出文件內容符合指定的范本樣式的文件名稱
-L	列出文件內容不符合指定的范本央視的文件名稱

-n	在顯示符合范本樣式的那一列之前,標示出該列的列數編號

-q	不顯示任何信息

-r	在指定路徑中遞歸查找

-s	不顯示錯誤信息

-v	反向查找
-V	顯示版本信息

-w	匹配整個單詞

-x	只顯示全列符合的列
--help	在線幫助

grep 單獨使用時至少有兩個參數,如少於兩個參數,grep 會一直等待,直到該程序被中斷。如果遇到這樣的情況,可以使用 Ctrl + c 終止。 默認情況下只搜索當前目錄,如果遞歸查找子目錄,可使用-r選項。

grep命令使用方法

在指定的文件中查找字符串:

grep root  /etc/passwd    在 /etc/passwd  中查找 root 字符串

結合管道一起使用:

cat /etc/passwd   | grep root

grep mysql  my.cnf | grep datadir

查找符合條件的內容所在的行號:

grep -n root /etc/passed

在 nginx.conf 中查找包含 listen 的行號並打印出來:

grep listen  nginx.conf

查找指定字符串:

grep uuid  test.txt    區分大小寫
grep UUID  test.txt    區分大小寫

grep -i uuid test.txt  不區分大小寫

列出匹配字符串的文件名:

grep -l uuid test.txt

列出不匹配字符串的文件名:

grep -L uuid test.txt

匹配整個單詞:

gerp -w UU    test.txt
grep -w UUID   test.txt

除了顯示匹配的行,分別顯示該行上下文的 n 行:

grep -C1 UUID test.txt  此處 n = 1 ,跟在 -C 參數后面

按正則表達式查找指定字符串:

grep -n  -E  "^[a-z]+"   test.txt
grep -n  -E  "^[^a-z]+"  test.txt

grep  -E   "datadir | socket"  my.cnf

遞歸查找:

grep -r var . | head -3

在當前的目錄下查找文件中的字符串hello:

grep  -rn   “hello”    

grep 正則參數說明

^	指定匹配字符串的行首
$	指定匹配字符串的結尾
*	表示0個以上的字符	
+	表示1個以上的字符
\	去掉指定字符的特殊含義

^	指定行的開始
$	指定行的結束
.	匹配一個非換行的字符
*	匹配零個或多個先前字符

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

\(..\)	標記匹配字符
<	指定單詞的開始
>   指定單詞的結束

x{m}	重復字符 x,m 次
x{m},	重復字符 x, 至少 m 次
x{m,n}	重復字符x, 至少 m 次,不多於 n 次

w	匹配文字和數字字符,也就是 [A-Za-z0-9]
b	單詞鎖定符

+	匹配一個或多個先前的字符
?	匹配零個或多個先前的字符

a|b|c	匹配 a 或 b 或 c

()	分組符號	

[:alnum:]	文字數字字符

[:alpha:]	文字字符

[:digit:]	數字字符

[:graph:]	非空格、控制字符

[:lower:]	小寫字符

[:cntrl:]	控制字符

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

[:punct:]	標點符號

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

[:upper:]	大寫字符

[:xdigit:]	十六進制數(0-9,a-f,A-F)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM