正規表示式 與萬用字元

2022-09-23 16:30:16 字數 2289 閱讀 7712

1、 萬用字元

萬用字元是shell在做pathnameexpansion時用到的。說白了一般只用於檔名匹配,它是由shell解析的,比如find,ls,cp,mv等

1、1 shell常見萬用字元:

萬用字元含義例項*

匹配 0 或多個字元

a*b a與b之間可以有任意長度的任意字元, 也可以乙個也沒有, 如aabcb, axyzb, a012b, ab。

?匹配任意乙個字元

a?b a與b之間必須也只能有乙個字元, 可以是任意字元, 如aab, abb, acb, a0b。

[list]

匹配 list 中的任意單一字元

a[xyz]b  a與b之間必須也只能有乙個字元, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。

[!list]或[^list]

匹配 除list 中的任意單一字元

a[!0-9]b a與b之間必須也只能有乙個字元, 但不能是阿拉伯數字, 如axb, aab, a-b。

[c1-c2]

匹配 c1-c2 中的任意單一字元 如:[0-9] [a-z]

a[0-9]b 0與9之間必須也只能有乙個字元 如a0b, a1b... a9b。

[!c1-c2]或[^c1-c2]

匹配不在c1-c2的任意字元

a[!0-9]b 如acb adb

匹配 sring1 或 string2 (或更多)其一字串

ab 列出aabcb,axyzb,a123b

1、2 shell meta字元(元字元)

shell 除了有萬用字元之外,還有一系列自己的其他特殊字元。

字元說明

ifs由 或 或 三者之一組成(我們常用 space )

cr由 產生

=設定變數

$取變數值或取運算值

重定向 stdout

重定向 stdin

|管道符號

&重導向 file descriptor ,或將命令置於背景執行

( )將其內的命令置於 nested subshell 執行,或用於運算或命令替換

將其內的命令置於 non-named function 中執行,或用在變數替換的界定範圍

;在前乙個命令結束時,而忽略其返回值,繼續執行下乙個命令

&&在前乙個命令結束時,若返回值為 true,繼續執行下乙個命令

||在前乙個命令結束時,若返回值為 false,繼續執行下乙個命令

!運算意義上的非(not)的意思

#注釋,常用在指令碼中

\轉移字元,去除其後緊跟的元字元或萬用字元的特殊意義

1、3 轉義字元

有時候,我們想讓 萬用字元,或者元字元 變成普通字元,不需要使用它。那麼這裡我們就需要用到轉義符了。 shell提供轉義符有三種。

字元說明

『』(單引號)

硬轉義,其內部所有的shell 元字元、萬用字元都會被關掉。

「」(雙引號)

軟轉義,其內部只允許出現特定的shell 元字元:$用於引數替換 `(反單引號,esc鍵下面)用於命令替換

\(反斜槓)

又叫轉義,去除其後緊跟的元字元或萬用字元的特殊意義

舉例:

2、正規表示式

正規表示式是用來匹配字串的,針對檔案內容的文字過濾工具裡,大都用到正規表示式,如vi,grep,awk,sed等。

另外,這篇文章只針對linux下的文字過濾工具的正規表示式進行討論,其他的一些程式語言,如c++(c regex,c++ regex,boost regex),j**a,python等都有自己的正規表示式庫。

簡單點來說,正規表示式是對一組正在處理的文字的描述。

3、萬用字元和正規表示式比較

(1)萬用字元和正規表示式看起來有點像,不能混淆。可以簡單的理解為萬用字元只有*,?,,{}這4種,而正規表示式複雜多了。

(2)*在萬用字元和正規表示式中有其不一樣的地方,在萬用字元中*可以匹配任意的0個或多個字元,而在正規表示式中他是重複之前的乙個或者多個字元,不能獨立使用的。比如萬用字元可以用*來匹配任意字元,而正規表示式不行,他只匹配任意長度的前面的字元。

(3)使用場景:萬用字元 是檔名。正規表示式 文字內容

(4) 使用命令 萬用字元 find rm ls cp  由shell解析; 正規表示式 vi grep sed awk

參考:

萬用字元與正規表示式

萬用字元與正規表示式很容易混淆,首先要明白二者是不同的,個人感覺萬用字元用於linux的shell命令 如檔名相關操作 中,而正規表示式用於文字內容中的字串搜尋和替換等。萬用字元是linux系統本身就支援的,而正規表示式用於vim編輯器或awk程式,這些文字處理工具正是由於支援正規表示式才變得強大。...

萬用字元與正規表示式

萬用字元與正規表示式很容易混淆,首先要明白二者是不同的,個人感覺萬用字元用於linux的shell命令 如檔名相關操作 中,而正規表示式用於文字內容中的字串搜尋和替換等。萬用字元是linux系統本身就支援的,而正規表示式用於vim編輯器或awk程式,這些文字處理工具正是由於支援正規表示式才變得強大。...

正規表示式與萬用字元

正規表示式與萬用字元的區別 正規表示式用來在檔案中匹配符合條件的字串,正則是包含匹配,grep awk sed等都支援正則匹配 萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配,ls find cp等都支援萬用字元 萬用字元?匹配乙個任意字元 匹配0個或任意多個任意字元,也就是匹配任何內容 匹配中...