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個或任意多個任意字元,也就是匹配任何內容 匹配中...