shell程式設計 正規表示式的應用

2021-08-20 20:12:50 字數 1133 閱讀 8254

1    匹配單個字元

單個一般字元:str=`grep "a" demo.txt`

轉義後的字元:如果想要匹配這些元字元本身,則需要在這些字元的前面加上轉義字元「\」,只保留其字面意義,如「\.」,匹配圓點「.」

反斜線「\」也是乙個元字元,如果想要匹配反斜線,也需要在其前面加上轉義字元,即表示式「\\」表示匹配乙個反斜線

儘管在通常情況下,大方括號中含有多個字元,但是一次只能從這些字元中選擇乙個,因此,方括號表示式仍然表示的是匹配單個字元。

當元字元文娛方括號中時,除了極少數的幾個元字元,例如連字元「-」或者「^」之外,其他元字元都將失去其特殊意義,只保留字面意義。

2    匹配多個字元

在基本正規表示式中,使用者可以使用元字元「\」表示,而在擴充套件表示式和perl表示式中,使用者在使用前面的元字元時無需將花括號轉義,直接使用「」即可,其中引數m表示最少出現的次數,而引數n表示前置字元最多出現的次數。

表示前置字元出現m次,表示前置字元最少出現m次

3    匹配字串的開頭和結尾

「^」和"$"分別用來匹配文字行的開頭字元和結尾字元

4    正規表示式運算子優先順序(高到低)\

* + ?

普通字元

^ $|

5    子表示式

所謂子表示式,是指由多個普通字元或者元字元組成的乙個小的正規表示式,作為乙個大的正規表示式的一部分來使用,而不是單獨使用。子表示式用圓括號()括起來。

6    萬用字元

shell本身不支援正規表示式,使用正規表示式的是一些shell命令和工具,例如:grep、awk、sed等。

但是shell使用了正規表示式中的某些元字元作為其萬用字元,常用的有* ? {}等,但與正規表示式中有些區別。

*表示匹配任意字元,而非其前導字元的0次或者多次

?表示乙個字元,而非其前導字元的0次或者1次重複

7    grep命令

grep使用正規表示式來搜尋文字,並且把匹配的文字行列印出來

grep [options] pattern [file...]

grep的pattern非常的靈活,可以是字串,也可以是變數,還可以是正規表示式。

但是如果模式中含空格,則需要將模式使用雙引號引起來,以避免grep命令將空格後面的模式誤認為檔名。

shell程式設計 正規表示式

正規表示式是用於字元排列和匹配模式的一種語法規則。它主要用於字串的模式分割 匹配 查詢及替換操作。萬用字元 元字元作用 前乙個字元匹配0次或任意多次。匹配除了換行符外任意乙個字元。匹配行首。例如 hello會匹配以hello開頭的行。匹配行尾。例如hello 會匹配以hello結尾的行。匹配中括號中...

shell程式設計 正規表示式

正規表示式是一種用於文字匹配的通用語言。正規表示式的基本組成部分 正規表示式 描述例子 行起始標記 abc匹配以abc起始的行 行結束標記 abc 匹配以abc結束的行 匹配任意乙個字元 abc 匹配abc後跟任意乙個字元 匹配包含在 字元 之中的任意乙個字元 abc de 匹配abcd 或者 ab...

shell程式設計 正規表示式

正規表示式是一種文字模式匹配,包括普通字元和特殊字元,它是一種字串匹配模式,可以用來檢查乙個字串是否含有某種子串,將匹配的子串替換或者從某個字串中取出某個條件的子串。shell也支援正規表示式,但不是所有命令都支援正規表示式,常見的命令只有grep sed awk命令支援正規表示式。示例 資料來源 ...