Linux命令(八)過濾文字 grep

2021-08-20 11:54:15 字數 3221 閱讀 5422

grep是乙個強大的文字搜尋工具命令,用於查詢檔案中符合指定格式的字串,支援正規表示式。如不指定任何檔名稱,或是檔名為-,則gerp命令從標準輸入裝置中讀取資料。

grep家族包括grepegrepfgrep。 egrep 和 fgrep 命令只跟 grep 有很小的不同。 egrep 是 grep 的擴充套件 , fgrep 就是 fixed grep 或 fast grep,該命令使用任何正規表示式中的元字元表示其自身的字面意義,不在特殊。其中 egrep 就等同於 " grep -e" ,fgrep 等同於"grep -f"。(有點暈。。) linux中的 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 只顯示全列符合的列

grep 單獨使用時至少有兩個引數,如少於兩個引數,grep 會一直等待,直到該程式被中斷。如果遇到這樣的情況,可以使用ctrl + c終止。 預設情況下只搜尋當前目錄,如果遞迴查詢子目錄,可使用-r選項。

在指定的檔案中查詢字串:

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」
^   指定匹配字串的行首

$ 指定匹配字串的結尾

* 表示0個以上的字元

+ 表示1個以上的字元

\ 去掉指定字元的特殊含義

^ 指定行的開始

$ 指定行的結束

. 匹配乙個非換行的字元

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

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

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

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

< 指定單詞的開始

> 指定單詞的結束

x 重複字元 x,m 次

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

x 重複字元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 awk sed

grep的使用 一 grep一般格式 grep 選項 基本正規表示式 檔案 這裡的正規表示式可以為字串。在grep命令中輸入字串引數時,最好將其用雙引號括起來。呼叫變數時也可以使用雙引號。在呼叫模式匹配事,應使用單引號。二 grep常用選項 c只輸出匹配行的計數。i不區分大小寫 只用於單字元 h查詢...

Linux文字過濾

文字流 shell 使用三種標準的 i o 流,分別為 stdin 是標準輸入流,為命令提供輸入,檔案描述符為0 stdout 是標準輸出流,顯示來自命令的輸出,檔案描述符為1 stderr 是標準錯誤流,顯示命令中的錯誤輸出,檔案描述符為2輸出重定向 作用 輸出預設是到顯示器上,重定向可以將輸出寫...

Linux文字處理之grep文字過濾命令

grep 縮寫來自globally search a regular expression and print 是一種強大的文字搜尋工具 它能使用特定模式匹配 包括正規表示式 搜尋文字,並預設輸出匹配行 unix的grep家族包括grep egrep和fgrep,windows系統下類似命令find...