linux基礎 grep以及模式正規表示式

2021-09-20 15:06:40 字數 3439 閱讀 8335

grep [options] pattern [file....]

-i:不區分大小寫

--color:高亮顯示匹配字元

-v:顯示沒有被匹配到的行

-o:只顯示被匹配到的字串

-e:使用擴充套件正規表示式

*:任意長度的任意字元

?:匹配任意單個字元

:匹配指定範圍內的任意字元

[^]:匹配指定範圍外的字元

-a n:顯示匹配到行下面n行

-b n:顯示匹配到行上面n行

-c n:顯示匹配到行前後n行

正規表示式:regexp

basic regexp:基本正規表示式

extended regexp:擴充套件正規表示式

基本正規表示式

grep預設使用基本正規表示式,使用-e引數表示使用副檔名正規表示式

元字元.:匹配任意單個字元

:匹配指定範圍內的任意單個字元

[^]:匹配指定範圍外的任意單個字元

同時也支援萬用字元:

[a-z],[a-z],[0-9],[a-za-z],[0-9a-za-z]

[[:space:]]:空白字元

[[:punct:]]:標點符號

[[:lower:]]:小寫字母

[[:upper:]]:大寫字母

[[:alpha:]]:大小寫字母

[[:digit:]]:數字

[[:alnum:]]:數字和大小寫字母

次數匹配

*:匹配其前面字元任意次

a,b,ab,aab,acb,acdb

a*b則只可以匹配b,ab,aab

.*:任意長度的任意字元

?:匹配其前面的字元一次或0次,一般需要使用\?轉義

a,b,ab,aab,acb,acdb

a\?b則只可以匹配b,ab,aab,acb,acdb

注:grep是在行中查詢,因此只要按照模式匹配到部分字元就可以匹配

\:匹配其前面字元,至少m次,至多n次。

\:至少一次

\:至少0次至多5次

1

2

[root@liang-study basic]# grep '[[:space:]]\[0-9]\$' a.txt

1

位置錨定:

^:錨定行首,此字元後面的任意內容必須出現在行首

$:錨定行尾,此字元後面的任意內容必須出現在行尾

^$:空白行

\《或者\b:其後面的字元必須作為片語的首部出現,注意書寫位置

\>或者\b:其前面的字元必須作為片語的尾部出現,注意書寫位置

例子:\:表示查詢包含root作為單獨片語的行

分組:\(\)

\(ab\)*:表示匹配ab任意次,即要麼有ab,要麼沒有ab,所以全部都會匹配。如abab,ababc,a,b。

1

2

3

4

5

[root@liang-study basic]# grep '\(ab\)\' a.txt

23ab

ab

aab

aaab

上例,就表示匹配包含ab的1-3次

\(ab\).*\1:引用第乙個左括號以及與之對應的右括號中間的所有內容

\2\3

1

2

3

[root@liang-study basic]# grep '\(ab\).*\1' a.txt

23ab cdh ab

aab  root ab

上例中表示匹配到ab後由任意字元後再次匹配ab的行

1

2

[root@liang-study basic]# grep '\(ab\).*\(cd\).*\2' a.txt

23ab cdh abcd

匹配第二個左括號以及與之對應的右括號中間的所有內容

擴充套件正規表示式

字元匹配:

.:匹配任意單個字元(類基本)

:匹配指定範圍內的任意單個字元(類基本)

[^]:匹配指定範圍外的任意單個字元(類基本)

次數匹配:

*:匹配其前面字元任意次(類基本)

?:匹配其前面的字元一次或0次,一般不需要使用\轉義

+:匹配其前面字元至少一次

(m,n):匹配其前面字元,至少m次,至多n次。一般不需要使用\轉義

位置錨定:(和基本正規表示式相同)

分組:(ab):

(ab):引用第乙個左括號以及與之對應的右括號中間的所有內容

(ab):引用第2個左括號以及與之對應的右括號中間的所有內容

|和or:表示或者

注:可以看出此匹配是完整匹配a|a左邊和右邊。

注:經過分組匹配,即可匹配ab或者ab了

例子:獲取ifconfig 0-255之間的整數

1

2

3

4

5

6

ifconfig|grep-e --color'\'

[1-9]:匹配符合條件的個位數

[1-9][0-9]:匹配符合條件的兩位數

1[1-9][0-9]:匹配符合條件的1xx的三位數

2[0-4][0-9]:匹配符合條件的2xx的三位數

25[0-4]:匹配符合條件的25x的三位數

linux基礎命令grep

目的 使用grep命令來查詢檔案中符合條件的字串 格式 grep 選項 查詢模式 檔名 舉例項看看 建立乙個檔案test1.txt,檔案的內容是 aaaaaaaaa abcabcabcabc cbacbacba match pattern nand erase 首先在查詢字串時,我們希望顯示如下內容...

linux 正則化以及grep命令

cut命令 取 path路徑裡第二個 f2 c處理規整資料 grep命令 基於行操作 查詢特定字串 grep n the regular express 在regular express檔案裡查詢the,n代表顯示行號 grep vn the regular express v代表查詢沒有 the ...

Linux基礎 grep匹配命令

正則就是有一定規律的字串,不僅可以使用命令列工具grep,sed,awk egrep去引用正則,還可以把正則嵌入到 nginx,apache,甚至php,python中。特殊符號 grep,主要用來過濾出指定的行。指定的條件,用正規表示式。1 語法選項 grep civnabc word filen...