正規表示式是用於字元排列和匹配模式的一種語法規則。它主要用於字串的模式分割、匹配、查詢及替換操作。
萬用字元:
元字元作用*前乙個字元匹配0次或任意多次。
.匹配除了換行符外任意乙個字元。
^匹配行首。例如^hello會匹配以hello開頭的行。
$匹配行尾。例如hello$會匹配以hello結尾的行。
匹配中括號中指定的任意乙個字元,只匹配乙個字元。例如[aoeiu]匹配任意乙個母音字元,[0-9]匹配任意乙個數字,[a-z][0-9]匹配小寫字和一位數字構成的兩位字元
[^]匹配除中括號的字元以外的任意乙個字元。例如:[^0-9]匹配任意一位非數字字元,[^a-z]表示任意一位非小寫字母。
\轉義符。用於取消講特殊符號的含義取消。
\表示其前面的字元恰好出現n次。例如[0-9]\匹配4位數字,
\表示前面的字元至少出現一次,最多出現m次。例如[a-z]\匹配6到8位的小寫字母。
補充:
?()屬於擴充套件正則
修改~/.bashrc配置檔案,為grep起別名,將匹配出來的用顏色顯示alias grep=』grep –color=auto』
例如:*號的示例
[root@localhost home]# grep aa* test.txt aaa
aaaaaaa
aaaaa
abaabb
例如
「.」:匹配除了換行符外任意乙個字元
「s..d」:會匹配在s和d這兩個字母之間一定有兩個字元的單詞
[root@localhost home]# grep "s..d" test.txt
said
soid
sdkdkdkd
「s.*d」:匹配在s和d字母之間有任意字元
[root@localhost home]# grep "s.*d" test.txt
said
soid
sdkdkdkd
「.*」:匹配所有內容
[root@localhost home]# grep ".*" test.txt aaa
aaaaaaa
aaaaa
abaabbbbb
bbbbbbb
bbbb
said
soid
sdkdkdkd
例如
「^」匹配行首,」$」匹配行尾
「^m」:匹配以大寫「m」開頭的行
[root@localhost home]# grep "^a" test.txt aaa
aaaaaaa
aaaaa
abaabb
「n$」:匹配以小寫「n」結尾的行
[root@localhost home]# grep "b$" test.txt
abaabbbbb
bbbbbbb
bbbb
「^$」:匹配空白行顯示,增加-n選項,顯示行號
[root@localhost home]# grep -n "^$" test.txt
6:9:
15:16:
例如
「」 : 匹配中括號中指定的任意乙個字元,只匹配乙個字元。
「s[ao]id」:匹配s和i字母中間,要麼是a,要麼是o的字串
[root@localhost home]# grep -n "s[ao]id" test.txt
17:said
18:soid
「[0-9]」:匹配包括任意乙個數字的行
[root@localhost home]# grep
-n "[0-9]" test
.txt
22:6adfadfadf8
23:jladf8002378
25:ladfjadf7
27:3333333333
29:2222222222
「^[a-z]」:匹配用小寫字母開頭的行
[root@localhost home]# grep "^[a-z]" test.txt aaa
aaaaaaa
aaaaa
abaabbbbb
bbbbbbb
bbbb
said
soid
sdkdkdkd
jladf8002378
ladfjadf7
「[a-z]$」:匹配用小寫字母結尾的行
[root@localhost home]# grep "[a-z]$" test.txt aaa
aaaaaaa
aaaaa
abaabbbbb
bbbbbbb
bbbb
said
soid
sdkdkdkd
[root@localhost home]# grep "^[a-z]$" test.txt ab
[root@localhost home]# grep "^[a-z][a-z]$" test.txt
aaab
bb
「[^]」:匹配除中括號的字元以外的任意字元。(說明:^放在中括號內)
「^[^a-z]」:匹配不用小寫字母開頭的行
[root@localhost home]# grep "^[^a-z]" test.txt
6adfadfadf8
3333333333
2222222222
「^[^a-za-z]」:匹配不用字母開頭的行
[root@localhost home]# grep "^[^a-za-z]" test.txt
6adfadfadf8
3333333333
2222222222
「\」:轉義字元,作用讓特殊的字元喪失意義
「.$」:匹配使用」.」結尾的行
[root@localhost home]# grep "\.$" test.txt
6adfadfadf8.
「\」:表示其前面的字元恰好出現n次
「a\」:匹配a字母連續出現三次的字串。
注意:至少重複3次,匹配出來的結果顯示超過3個字串也會顯示到結果中
[root@localhost home]# grep "a\" test.txt
aaaaaaa
aaaaa
「[0-9]\」:匹配包括連續的三個數字的字串
要想準確查詢,需要加定界符
shell程式設計 正規表示式
正規表示式是一種用於文字匹配的通用語言。正規表示式的基本組成部分 正規表示式 描述例子 行起始標記 abc匹配以abc起始的行 行結束標記 abc 匹配以abc結束的行 匹配任意乙個字元 abc 匹配abc後跟任意乙個字元 匹配包含在 字元 之中的任意乙個字元 abc de 匹配abcd 或者 ab...
shell程式設計 正規表示式
正規表示式是一種文字模式匹配,包括普通字元和特殊字元,它是一種字串匹配模式,可以用來檢查乙個字串是否含有某種子串,將匹配的子串替換或者從某個字串中取出某個條件的子串。shell也支援正規表示式,但不是所有命令都支援正規表示式,常見的命令只有grep sed awk命令支援正規表示式。示例 資料來源 ...
shell程式設計之正規表示式
1 正規表示式 其實就是一種規範,也就是模式,約束字串等符合什麼樣的格式,比如要求字串必須a開頭,t結尾,符合這樣條件的字串就要用到正規表示式。2 兩套庫 gnu linux中有有兩套庫用足正規表示式程式設計,posix庫,自帶的 pcre庫,perl,功能比較全,本文採用perl。3 初體驗 eg...