linux命令 grep使用梳理

2021-08-08 08:15:43 字數 3060 閱讀 4859

grep(globally search a regular expression and print)以正規表示法進行全域查詢並列印,grep是乙個最初用於unix作業系統的命令列工具,在給出檔案列表或標準輸出後,grep會對匹配乙個或多個正規表示式的文字進行搜尋,並只輸出匹配(或不匹配)的行或文字。

一、查詢規則

grep命令的語法為:

grep

[option(s)]

pattern

[file(s)]

grep查詢的主要option可選項功能描述如下:

option

功能描述

-a 顯示匹配規則的行,並顯示該行後的x行

-b 顯示匹配規則的行,並顯示該行前的x行

-c統計符合規則的行數

-c 顯示匹配規則的行,並顯示該行前後的x行,等同於 -x

-e patternlist

指定乙個或多個搜尋模式

-e將每個規則當作擴充套件的正規表示式(ere),ere空值可匹配所有行

-f將指定的模式視作字串而不是正規表示式

-f指定規則檔案,查詢匹配規則檔案中定義規則的行

-h不展示符合規則行所在的檔名

-h展示符合規則行所在的檔名

-i比較時,大小寫不敏感

-l展示匹配規則的行所在的檔名

-l展示不匹配規則的檔案的檔名

-n展示匹配規則的行編號

-q禁止輸出到標準輸出

-r/-r

在當前目錄及子目錄下查詢,等同於 -d recurse

-s禁止輸出錯誤資訊

-v展示與指定規則不匹配的行

-w展示按單詞匹配的行

-x展示精確匹配規則的行

-o展示精確匹配規則的部分

二、正規表示式

grep pattern部分的正規表示式基本元素:

元素功能描述範例^

錨定行首

『^test』|錨

定行尾|

′tes

t 』

.匹配乙個非換行字元

『te.t』

*匹配零個多個字元

『*test』

\<

匹配行首

『\\>

匹配行尾

『test\>』

x\連續重複字元』x』 m次

『te\st』

x\連續重複字元』x』至少m次

『te\st』

x\連續重複字元』x』至少m次,至多n次

『te\st』

\w匹配乙個文字或字元

『test\w*』 (零個或多個文字或字元)

\w匹配乙個非單詞字元

『test\w』

\b單詞鎖定功能

『\btest\b』

匹配乙個字元

t[ee]st

[-]匹配乙個指定範圍的字元

[a-za-z]

[^]不匹配乙個範圍的字元

[^0-9]

\d匹配乙個數字字元

『\d』 (相當於』[0-9]』)

\d匹配乙個非數字字元

『\d』 (相當於』[^0-9]』)

\w匹配乙個單詞字元

『\w』 (相當於』[a-za-z0-9]』)

\w匹配乙個非單詞字元

『\w』 (相當於』[^a-za-z0-9]』)

\s匹配乙個空白字元,如空格、製表、換行等

『\s』 (相當於』[\f\n\r\t\v]』)

\s匹配乙個非空白字元

『\s』 (相當於』[^\f\n\r\t\v]』)

\b匹配乙個單詞邊界

『\b』

\b匹配乙個非單詞邊界

『\b』

三、使用範例

3.1 option應用

grep -e

'pattern1'

-e'pattern2' test.txt

grep -v '^test' test.txt
grep -v 'pattern1' test.txt | grep -v 'pattern2'
grep --color=auto 'pattern' test.txt
注:可在~/.bash_profile中新增alias grep=』grep –color=auto』

grep -r 'pattern' *
grep -c 'pattern' test.txt
grep -n '^$' test.txt
grep -x '[0-9][0-9]*' test.txt
grep -f patternfile test.txt
3.2 正則應用
grep

'^[a-z]' test.txt

grep

'^[^a-za-z]' test.txt

四、egrep、fgrep
grep -e 'pattern1|pattern2' test.txt

或grep

'pattern1\|pattern2' test.txt

或egrep 'pattern1|pattern2' test.txt

grep -e '0+' test.txt

或grep

'0\+' test.txt

或egrep '0+' test.txt

grep -e '(no)+' test.txt

或grep

'(no)\+' test.txt

或egrep '(no)+' test.txt

grep -e

'no?' test.txt

或egrep 'no?' test.txt

注:fgrep職能查詢固定文字,速度比grep快

grep命令梳理

一 grep的工作原理 grep命令在乙個或多個檔案中查詢某個字元模式,如果這個模式中包含空格,就必須用引號把它括起來。grep命令中,模式可以是乙個被引號括起來的字串,也可以是單個詞。位於模式之後的所有單詞都被視為檔名。grep將輸出傳送到螢幕,它不會對輸入檔案進行任何修改或變化。grep返回的退...

linux命令 find使用梳理

linux find命令是所有linux命令中最有用的乙個,它允許按名稱 型別 使用者 許可權 時間等實時查詢檔案,還能對查詢到的檔案執行檢視 刪除 移動等操作。一 find官方手冊 使用man find檢視linux find命令的使用方法如下 name find walk a file hier...

Linux下grep命令的使用!

grep 錨定行的開始 如 grep 匹配所有以grep開頭的行。錨定行的結束 如 grep 匹配所有以grep結尾的行。匹配乙個非換行符的字元 如 gr.p 匹配gr後接乙個任意字元,然後是p。匹配零個或多個先前字元 如 grep 匹配所有乙個或多個空格後緊跟grep的行。一起用代表任意字元。匹配...