Shell程式設計 正規表示式1 21 4

2021-10-05 15:37:55 字數 2223 閱讀 7042

1.正規表示式與萬用字元

正規表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。grep、awk、sed等命令可以支援正規表示式。

萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配。ls、find、cp這些命令不支援正規表示式,所以只能使用shell自己的萬用字元來進行匹配了。

基礎正規表示式

*    前乙個字元匹配0次或任意多次。(0次即為空) 

. 匹配除了換行符外任意乙個字元。

^ 匹配行首。例如:^hello會匹配以hello開頭的行。

$ 匹配行尾。例如:hello$會匹配以hello結尾的行。

匹配中括號中指定的任意乙個字元,只匹配乙個字元。例如:[aoeiu] 匹配任意乙個母音字母,[0-9] 匹配任意一位數字, [a-z]

[0-9]匹配小寫字和一位數字構成的兩位字元。

[^] 匹配除中括號的字元以外的任意乙個字元。例如:[^0-9] 匹配任意一位非數字字元,[^a-z] 表示任意一位非小寫字母。

\ 轉義符。取消特殊符號的含義。

\ 表示其前面的字元恰好出現n次。例如:[0-9]\ 匹配4位數字,[1]

[3-8]

[0-9]\ 匹配手機號碼。

\ 表示其前面的字元出現不小於n次。例如: [0-9]\ 表示兩位及以上的數字。

\ 表示其前面的字元至少出現n次,最多出現m次。例如: [a-z]\ 匹配6到8位的小寫字母。

"*"前乙個字元匹配0次,或任意多次

grep

"a*" test_rule.txt

#匹配所有內容,包括空白行

grep

"aa*" test_rule.txt

#匹配至少包含有乙個a的行

"." 匹配除了換行符外任意乙個字元

grep

"s..d" test_rule.txt

#"s..d"會匹配在s和d這兩個字母之間一定有兩個字元的單詞

grep

"s.*d" test_rule.txt

#匹配在s和d字母之間有任意字元

grep

".*" test_rule.txt

#匹配所有內容

「^」匹配行首,「$」匹配行尾

grep

"^m" test_rule.txt

#匹配以大寫「m」開頭的行

grep

"n$" test_rule.txt

#匹配以小寫「n」結尾的行

grep -n "^$" test_rule.txt

#會匹配空白行

「」 匹配中括號中指定的任意乙個

字元,只匹配乙個字元

grep

"s[ao]id" test_rule.txt

#匹配s和i字母中,要不是a、要不是o

grep

"[0-9]" test_rule.txt

#匹配任意乙個數字

grep

"^[a-z]" test_rule.txt

#匹配用小寫字母開頭的行

「[^]」 匹配除中括號的字元以外的

任意乙個字元

grep

"^[^a-z]" test_rule.txt

#匹配不用小寫字母開頭的行

grep

"^[^a-za-z]" test_rule.txt

#匹配不用字母開頭的行

「\」 轉義符

grep

"\.$" test_rule.txt

#匹配使用「.」結尾的行

「\」表示其前面的字元恰好出現n次

grep

"a\" test_rule.txt

#匹配a字母連續出現三次的字串

grep

"[0-9]\" test_rule.txt

#匹配包含連續的三個數字的字串

「\」表示其前面的字元出現不小於n次

grep

"^[0-9]\[a-z]" test_rule.txt

#匹配最少用連續三個數字開頭的行

「\」匹配其前面的字元至少出現n次,最多出現m次

grep

"sa\i" test_rule.txt

#匹配在字母s和字母i之間有最少乙個a,最多三個a

shell程式設計 正規表示式

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

shell程式設計 正規表示式

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

shell程式設計 正規表示式

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