linux-shell(14) 基礎正則表達式

1:正則表達式與通配符

正則表達式用來在文件中匹配符合條件的字符串,正則是包含匹配。grep, awk, sed等命令可以支持正則表達式。

通配符用來匹配符合條件的文件名,通配符是完全匹配。ls, find, cp這些命令不支持正則表達式,所以只能使用shell自己的通配符來進行匹配了。

2:基礎正則表達式

元字符 作用
* 前一個字符串匹配0次或者任意多次
. 匹配除了換行符外任意一個字符。
^

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

$ 匹配行尾。例如:hello&會匹配以hello結尾的行
[] 匹配中括號中指定的任意一個字符,只匹配一個字符。例如:[aeiou]匹配任意一個元音字母,[0,9]匹配任意一位數字,[a-z][0-9]匹配小寫字母和一位數字構成的兩位字符。
[^] 匹配除中括號的字符以外的任意一個字符。例如:[^0-9]匹配任意一位非數字字符,[^a-z]表示任意一位非小寫字母。
\ 轉義符。用於取消講特殊符號的含義取消
\{n\} 表示其前面的字符恰好出現n次。例如:[0-9]\{4\}匹配4位數字,[1][3-8][0-9]\{9\}匹配手機號碼。
\{n,\} 表示其前面的字符出現不小於n次。例如:[0-9]\{2,\}表示兩位及以上的數字
\{n,m\} 表示其前面的字符至少出現n次,最多出現m次。例如:[a-z]\{6,8\}匹配6到8位的小寫字母。 

創建一個文件來使用以下這些命令:

grep "b*" test.txt(匹配所有內容,包括空白行)

grep "bb*" test.txt(匹配至少包含有一個b的行)

grep "e..s" test.txt(會匹配在e和s兩個字母之間一定有兩個字符的單詞)

grep "^A" test.txt(匹配以A開頭的行)

grep "k$" test.txt(匹配以k結尾的行)

grep -n "^$" test.txt (匹配空白行)

grep "e[my]e" test.txt(匹配e和e子母鐘,要不是m,要不是y)

grep "[0-9]" test.txt(匹配任意一個數字)

grep "^[A-Z]" test.txt(匹配以大寫字母開頭的行)

grep "^[0-9]" test.txt

grep "^[^a-zA-Z]" test.txt(匹配不用字母開頭的行)

grep "\.$" test.txt(匹配使用”.“結尾的行)

grep "[0-9]\{2\}" test.txt (匹配[0-9]連續出現2次的字符串)

grep "^[0-9]\{3,\}" test.txt(匹配最少出現3個數字開頭的行)

grep "[0-9]\{1,4\}" test.txt(匹配最少1個數字最多4個數字的行)

grep "2[0-9]\{2,4\}" test.txt(表示2後面跟着至少3個數字)

可以使用正則表達式來給變量賦值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章