grep 詳細用法

2021-06-20 07:03:18 字數 3654 閱讀 4646

grep命令是unix中用於文字搜尋的大師級工具。搜到結果。如在檔案中搜尋乙個單詞:

$ grep match_pattern filename

或者:$ grep 「match_pattern」 filename

也可以像下面這樣從stdin中讀取:

$ echo –e 「this is a word\nnextline」 | grep word

this is a word

乙個grep命令也可以對多個檔案進行搜尋:

$ grep 「match_text」 file1 file2 file3 …

用--color選項可以在輸出行中重點標記出匹配到的單詞,如:

$ grep word filename –color=auto

grep命令通常將match_pattern視為萬用字元。如果要使用正規表示式,需要新增-e選項——這意味著使用擴充套件(extended)正規表示式,也可以使用預設允許正規表示式的grep命令——egrep。例如:

$ grep –e 「[a-z]+」

或者:$ egrep 「[a-z]+」

為了只輸出檔案中匹配到的文字部分,可以使用選項-o,如:

$ echo this is a line. | grep –o –e 「[a-z]+\.」

line.

$ echo this is a line. | egrep –o 「[a-z]+」

this

is

a

line

選項-p可以支援perl風格的match_pattern,如:

$ echo –e 「a\tb」 | grep –p 「\t」

a       b

選項-v可以將匹配結果進行反轉(invert),即要列印除包含match_pattern的行之外的所有行:

$ grep –v match_pattern file

選項-c可以統計匹配行的數量(注意並不是匹配的次數),如:

$ echo –e 「1 2 3 4\nhello\n5 6」 | egrep –c 「[0-9]」

2

為了統計檔案中匹配項的數量,可以使用下面的技巧:

$ echo –e 「1 2 3 4\nhello\n5 6」 | egrep –o 「[0-9]」 | wc –l

6

選項-n可以列印出匹配字串的行號:

$ echo –e 「1 2 3 4\nhello\n5 6」 | egrep –n 「[0-9]」

1: 1 2 3 4

3: 5 6

選項-b可以列印樣式匹配所位於的字元或位元組偏移,如:

$ echo gnu is not unix | grep –b –o 「not」

7: not

選項-l可以搜尋多個檔案並找出匹配文字位於哪乙個檔案中,如:

$ grep –l linux sample1.txt sample2.txt

sample1.txt

sample2.txt

選項-l與選項-l相反,返回乙個不匹配的檔案列表。

-r選項可以對文字進行遞迴搜尋,如要查詢某個文字」text」位於哪個檔案的第幾行,可用:

$ grep 「text」 . –r –n

-i選項可以忽略樣式中的大小寫,例如:

$ echo hello work | grep –i 「hello」

hello world

在進行匹配的時候通常只指定乙個樣式。我們可以用選項-e來指定多個匹配樣式,如:

$ echo this is a line of text | grep –e 「this」 –e 「line」 –o

this

line

還有另一種方法也可以指定多個樣式。我們可以提供乙個樣式檔案用於讀採樣式。在樣式檔案中逐行寫下需要匹配的樣式,然後用選型-f執行grep:

$ grep –f pattern_file source_filename

grep命令在搜不到結果的時候返回**是1,而不是0,另外grep命令還有-q(靜默輸出)選項,它僅執行命令,返回命令的返回值,而不會向標準輸出列印任何輸出,配合這個選項,可以測試乙個檔案是否包含指定的文字。

grep命令還可以列印出匹配文字之前或之後的行

-a選項匹配某個結果之後的x行:

$ seq 10 | grep 5 –a 3

5

6

7

8

-b選項匹配某個結果之前的x行:

$ seq 10 | grep 5 –b 3

2

3

4

5

-c選項匹配某個結果之前及之後的3行:

$ seq 10 | grep 5 –c 3

2

3

4

5

6

7

8

如果有多個匹配,那麼以一行」—「作為各匹配之間的定界符:

$ echo –e 「a\nb\nc\na\nb\nc」 | grep a –a 1

a

b

--

a

b

另外,grep 「\t」是不行的,需要輸入乙個真正的製表符,方法為先按ctrl+v,再按tab鍵。

精華 Grep 用法

grep g globally search for a re regular expression and p print the results.1 引數 i 忽略大小寫 c 列印匹配的行數 l 從多個檔案中查詢包含匹配項 v 查詢不包含匹配項的行 n 列印包含匹配項的行和行標 2 re 正規表...

grep用法小結

基本用法 grep c user file1 file2 只列印檔案中匹配的行數 grep n user file1 file2 列印檔案中匹配的內容並顯示行號 grep vc user file1 file2 列印出file1和file2不包含user的行數 grep i user file1 f...

grep用法總結

grep,egrep,fgrep grep 根據模式搜尋文字,並將符合模式的文字行顯示出來 pattern 文字字元和正則表達的元字元組合而成匹配條件。grep options pattern file.i 忽略大小寫 colour v 顯示沒有被模式匹配到的行 o 只顯示被模式匹配到的字串 e 來...