Shell學習之結合正規表示式與萬用字元的使用 五

2022-04-04 05:28:23 字數 2443 閱讀 9557

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

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

符號	作用

* 匹配任何字串/文字,包括空字串;*代表任意字元(0個或多個) ls file *

? 匹配任何乙個字元(不在括號內時)?代表人意1個字元 ls file 0

[abcd] 匹配abcd中任何乙個字元

[a-z] 表示範圍a到z,表示範圍的意思 匹配中括號中任意乙個字元 ls file 0

表示生成序列。以逗號分隔,且不能有空格

補充

[!abcd] 或[^abcd]表示非,表示不匹配括號裡面的任何乙個字元

? 匹配任何乙個字元

[abcd] 表示匹配中括號內任意乙個字元就成

ls te[asb]t
{}生成序列

touch
匹配檔案

ls [a-c]
利用{}備份資料庫

表示將ae複製乙份叫做affff

cp a

表示將ae做備份叫做ae.bak

cp a

!^表示非,取反

查詢檔案名裡沒有a和e的檔名

"*" 前乙個字元匹配0次,或者任意多次匹配至少包含有乙個a的行

grep "aa*" test.txt

匹配至少包含有兩個a的行

grep "aaa*""."匹配除了換行符以外任意乙個字元匹配所有內容

grep ".*" test.txt

匹配在s與d之間一定有兩個字元的單詞

grep "s..d" test.txt

匹配在s與d之間有任意字元

grep "s.*d" test.txt"^"匹配行首,"$"匹配行尾匹配空白行

grep "^$" test.txt

匹配以大寫字母m開頭的行

grep "^m" test.txt

匹配以小寫字母m結尾的行

grep "m$" test.txt"'匹配中括號中指定的任意乙個字元,只匹配乙個字元匹配s和i字母中,要不是a、要不是b

grep "s[ao]id" test.txt

匹配任意乙個數字

grep "[0-9]" test.txt

匹配用小寫字母開頭的行

grep "^[a-z]" test.txt"[^]"匹配除中括號的字元以外的任意乙個字元匹配不用小寫字母開頭的行

grep "[^a-z]" test.txt

匹配不用字母開頭的行

grep "^[^a-za-z]" test.txt"\" 轉義符匹配以點結尾的行

grep "\.$" test.txt"\" 表示其前面的字元恰好出現n次匹配a字母連續出現三次的字串

grep "a\" test.txt

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

grep "[0-9]\" test.txt"\" 表示其前面的字元出現不小於n次匹配最少用連續三個數字開頭的行

grep "^[0-9]\[a-z]" test.txt"\'匹配其前面的字元至少出現n次,最多出現m次匹配在字母s和字母i之間有最少乙個a,最多三個a

grep "sa\i" test.txt

shell之正規表示式學習

shell程式設計 慕課網 shell程式設計之正規表示式 1.什麼是正規表示式 用於描述字元排列和匹配模式的一種語法規則。它主要用於字串的分割 匹配 查詢及替換工作.2.正規表示式與萬用字元 2.1 萬用字元 匹配任意內容 匹配任一乙個內容 匹配中括號中的乙個字元 2.2 正規表示式 正規表示式用...

Shell學習 正規表示式

定位符 同時錨定開頭和結尾,做精確匹配 單一錨定開頭或結尾或者不錨定的,做模糊匹配。錨定開頭 a 以a開頭 預設錨定乙個字元 錨定結尾 a 以a結尾 預設錨定乙個字元 匹配符 匹配字串 匹配除回車以外的任意乙個字元 字串分組 定義字元類,匹配括號中的乙個字元 表示否定括號 現字元類中的字元,取反。轉...

replace 結合正規表示式

為了簡化替換字串的操作,ecmscript提供了replace 方法,這個方法提供兩個引數,第乙個引數可以使乙個字串或regexp物件,第二個引數可以是乙個字串或者乙個函式。基礎知識 匹配整個模式的子字串。與regexp.lastmatch的值相同 匹配的子字串之前的字串,與regexp.leftc...