grep和正規表示式

2021-08-07 18:08:57 字數 3153 閱讀 4373

grep語法

正規表示式元字元

擴充套件正規表示式元字元

grep

grep(global search regular expression(re) and print out the line),是一款文字過濾(模式:pattern)工具。

作用:文字搜尋工具,根據使用者指定的「模式」對目標文字逐行進行匹配檢查;列印匹配到的行。

模式:由正規表示式字元及文字字元所編寫的過濾條件。

grep家族的三大分支

正規表示式

正規表示式(refexp):由一類特殊字元及文字字元所編寫的模式,其中有些字元不表示字元字面意義,而表示控制或通配的功能。

正規表示式是vim, grep, sed, awk等眾多強大文字處理工具的重要組成部分,被用來檢索、替換那些匹配某個模式的文字。

正規表示式分為兩類

grep [options] pattern [file…]

grep [options] [-e pattern | -f file] [file…]

grep命令選項

選項含義

- -color=auto

對匹配到的文字著色顯示

-v顯示不被pattern匹配到的行

-i忽略字元大小寫

-n顯示匹配的行號

-c統計匹配的行數

-o僅顯示匹配到的字串

-q靜默模式,不輸出任何資訊

-a #

匹配行的後#行

-b #

匹配行的前#行

-c #

匹配行的前後各#行

-e實現多個選項間的邏輯or關係 grep –e 『cat 』 -e 『dog』 file

-w匹配整個單詞

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

-f不支援正規表示式,直接搜尋文字

注意:centos6與centos7的區別,centos7上通過定義了grep的別名來高亮顯示匹配到的字串,centos6沒有高亮顯示。

正規表示式元字元根據功能的不同,可以分為以下幾類:字元匹配、匹配次數、位置錨定、分組。

字元匹配

元字元含義

.匹配任意單個字元

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

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

[:alnum:]

字母和數字

[:alpha:]

代表任何英文大小寫字元,即a-z和a-z

[:lower:]

小寫字母

[:upper:]

大寫字母

[:blank:]

空白字元(空格和製表符)

[:space:]

水平和垂直的空白字元(比[:blank:]包含的範圍廣)

[:cntrl:]

不可列印的控制字元(退格、刪除、警鈴…)

[:digit:]

十進位制數字

[:xdigit:]

十六進製制數字

[:graph:]

可列印的非空白字元

[:print:]

可列印字元

[:punct:]

標點符號

匹配次數

用在要指定次數的字元後面,用於指定前面的字元要出現的次數;需要注意的是,預設情況下,正規表示式是工作在貪婪模式下,能匹配多少就匹配多少。

元字元含義

*匹配前面的字元任意次,包括0次。

.*任意長度的任意字元

\?匹配其前面的字元0或1次

\+匹配其前面的字元至少1次

\匹配前面的字元n次

\匹配前面的字元至少m次,至多n次

\匹配前面的字元至多n次

\匹配前面的字元至少n次

位置錨定

對特定位置進行定位

元字元含義

^行首錨定,用於模式的最左側

$行尾錨定,用於模式的最右側

^pattern$

用於模式匹配整行

^$空行

^[[:space:]]*$

空白行\< 或\b

詞首錨定,用於單詞模式的左側

> 或\b

詞尾錨定;用於單詞模式的右側

\《模式\>

匹配整個單詞 分組

分組:是指將乙個或多個字元**在一起,當作乙個整體進行處理,其符號為:()

如:(xy)*ab 表示xy這個整體可以出現任意次

注意:

1. 分組括號中的模式匹配到的內容會被正規表示式引擎記錄與內部變數中,這些變數的命名方式為:\1,\2,\3,……

\1:從左側起,第乙個左括號以及與之匹配的右括號之間的模式所匹配到的字元;如:(ab+(xy)*)中\1表示:ab+(xy)*,\2表示:xy

2.後向引用:引用前面的分組括號中的模式所匹配的字元,而非模式本身。

或者用法

含義a\|b

a或bc\|cat

c或cat

\ (c|c\)at

cat或cat

擴充套件正規表示式與基本正規表示式功能類似,但擴充套件正規表示式元字元的書寫更加簡單明瞭,下面介紹的是擴充套件正規表示式與基本正規表示式的兩種元字元之間的不同之處。擴充套件正規表示式元字元依據功能也可以分為以下幾類:字元匹配、匹配次數、位置錨定、分組。

字元匹配

元字元含義

.任意單個字元

[ ]指定範圍的字元

[^]不在指定範圍的字元

匹配次數

元字元含義

*匹配前面字元任意次

?0或1次

+1次或多次

匹配m次

至少m,至多n次

位置錨定

元字元含義^行首

$行尾\<, \b

語首\>, \b語尾

分組():用括號括起來表示要引用的內容,不需要轉義。

後向引用:\1, \2, …

或者用法

含義a|b

a或bc|cat

c或cat

(c|c)at

cat或cat

grep和正規表示式

常用引數 f 規則檔案 file 規則檔案 指定規則檔案,其內容含有乙個或多個規則樣式,讓grep查詢符合規則條件的檔案內容,格式為每行乙個規則樣式。grep規則表示式 錨定行的開始 如 grep匹配所有以grep開頭的行 錨定行的結束,如 grep 匹配所有以grep結尾的行 匹配 乙個非換行符的...

正規表示式和grep

正規表示式 regular expression,re 是一種字元模式,用於在查詢過程中匹配指定的字元。在大多數程式裡,正規表示式都被置於兩個正斜槓之間 例如 lv o0 e 就是由正斜槓界定的正規表示式,它將匹配被查詢的行中任何位置出現的相同模式。在正規表示式中,元字元是最重要的概念。shell萬...

grep和正規表示式

正規表示式示例表 字 符 意 義 示 例 任意長度的字串。a 表示 空字串 aaaa a 長度為0或者1的字串。a?表示 空字串和a。長度為乙個或者多個的字串。a 表示 a aa aaaaaa 任意字元。a.表示 a後跟任意字元。代表上一規則重複數目 包含一組匹配花括號,裡面有兩個數字和乙個字元,表...