Linux命令(八)過濾文本 grep
阿新 • • 發佈:2018-01-06
控制字符 說明 /etc digi 指定 子目錄 lin linux 擴展
grep 命令介紹
grep是一個強大的文本搜索工具命令,用於查找文件中符合指定格式的字符串,支持正則表達式。如不指定任何文件名稱,或是文件名為
-
,則gerp命令從標準輸入設備中讀取數據。
grep
家族包括grep
egrep
和fgrep
。 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
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)
Linux命令(八)過濾文本 grep