Shell基礎 二 正規表示式

2021-08-22 16:20:43 字數 1533 閱讀 4479

grep

ls /usr/bin | grep zip

cat text.txt | grep hello -ab10

重要引數
-i 匹配忽略大小寫

-v 取反,即篩選不匹配

-c 列印匹配的數量

元字元:元字元使用時要用單引號括起來防止引數展開
^ $ . [ ]  - ? * + ( ) | \
任何字元:.
grep '.zip' /usr/bin //.代表任意字元,佔一位,所以'.zip'形成了四位匹配數,並不會匹配到只含zip的檔案。
錨點:^(以後邊字元開頭) $(以前邊字元結尾)
grep -h '^zip$' /user/bin

grep -i '^..j.r$' /usr/share/dict/words 在單詞表中查詢由五個字母構成,第三個字母為j,第五個字母為r的單詞。

grep '^$' 匹配空格

中括號表示式: 從乙個指定的字元集合中匹配乙個單個的字元。
grep -h '[bg]zip' test.txt  // 匹配bzip或者gzip
中括號表示式中的兩個特殊元字元:^(表否定),..(連字元表示乙個區域)
grep -h '[^bg]zip' test.txt // 匹配不是bzip和gzip的至少四位文字,^只在中括號表示式第一位時生效,其他位置會被認為是普通字元。

grep -h '^[a..z]' test.txt // 匹配以大寫字母開頭的文字

交替:| 允許從一系列的字串或者是其它正規表示式中選擇匹配項
echo "aaa" grep -e 'aaa|bbb'  匹配aaa或者bbb

grep -eh '^(bz|gz|zip)' text.txt // 可以用()包含交替然後和其他正規表示式元素結合起來匹配。

限定符

? 匹配零個或者乙個元素,使前面的元素可有可無。

匹配'(nnn) nnn-nnnn'或者'nnn nnn-nnnn' 即使()可有可無

echo "(555) 123-4567" | grep -e '^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'

* 匹配零個或者多個元素

+ 匹配乙個或者多個元素,即至少有乙個。

{} 匹配特定個數的元素

限定符 意思

n   匹配前面的元素,如果它確切地出現了 n 次。

n,m  匹配前面的元素,如果它至少出現了 n 次,但是不多於 m次。

n,  匹配前面的元素,如果它出現了 n 次或多於 n 次。

,m  匹配前面的元素,如果它出現的次數不多於 m 次。

'^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'

可簡化為 '^\(?[0-9]\)? [0-9]-[0-9]$'

Shell基礎 正規表示式

shell基礎 正規表示式 正規表示式 它用來在檔案中匹配符合條件的字串,正則是包含匹配。grep awk sed等命令支援正規表示式。而萬用字元用來在系統匹配符合條件的檔名,是完全匹配。ls find cp這些命令不支援正規表示式,所以只能使用shell自己的萬用字元來進行匹配了。元字元 作用 把...

shell 正規表示式基礎

1 常用的命令工具 grep egrep vim sed awk 2 基本的正則表達含義 d 匹配字母d 匹配任意單個字元 匹配乙個或多個 匹配任意多個字元 匹配字串的開頭 匹配字串的結尾 匹配集合中的任意單個字元 匹配否定,對括號中的集合取反 x y 匹配x到y連續的字串範圍 匹配轉義後的字串 匹...

Shell基礎之 正規表示式

普通字元 只是字面的意思 元字元 超過字面意思的意義 基本正規表示式元字元及其意義 0個或多個在 字元之前的那個普通字元 匹配任意字元 匹配行首 匹配行尾 匹配字元集合 轉義符 匹配前面字元出現n次 匹配前面字元至少出現n次 匹配前面字元出現n m次 hel o 可以匹配helll8o hello ...