萬用字元
「萬用字元是系統級別的 ⽽而正規表示式需要相關⼯工具和語⾔言的⽀支援
: egrep, awk, vi,perl。
當您鍵入
ls .txt
命令並按
enter
後,尋找哪些檔案同
.txt
模式相匹配的任務不是由
ls 命令,而是由
shell
自己完成。這需要對命令列是如何被
shell
解析的作進一步解釋。當您鍵入:
萬用字元語法:**
將與零個或多個字元匹配。這就是說
「什麼都可以
」。例子:
/etc/g*
與 /etc
中以 g
開頭的所有⽂檔案匹配。
/tmp/my*.txt
與 /tmp
中以 my
開頭,並且以
.txt
結尾的所有⽂檔案匹配。
$ ls *.txt該命令首先被分割成一系列單詞readme.txt recipes.txt
(本例中的
ls 和
.txt)
。當 shell
在某個單詞中發現了 ,它會將整個單詞當作通配模式解析,並用所有相匹配的檔案替換它。因此,該命令在執行前就變為
lsreadme.txt recipe.txt
,而這將得到期望的結果。其餘萬用字元有:
萬用字元語法:??
與任何單個字元匹配。例子:
萬用字元語法:
[!]該萬用字元與
? 相似,但允許指定得更確切。要使用該萬用字元,把您想要匹配的所有字元放在
內。結果的表示式將與
中任一字元相匹配。您也可以用
- 來指定範圍,甚至還可以組合範圍。
[...]
:同方括號中的任意乙個字元相匹配。這些字元可以用字元範圍
(比如
1-9)
或者離散值或同時使用兩者表示。例如:
[a-zbe5-7]
同所有
a 到
z 之間的字元和 b、
e、5、
6、7 相匹配。
[!...]
:與所有不在方括號中的某個字元匹配。例如
[!a-z]
同某個非小寫字母相匹配
[5];
myfile?
與⽂檔名為
myfile
後跟單個字元的任何⽂檔案匹配。
/tmp/notes?txt
將與 /tmp/notes.txt
和 /tmp/notes_txt
都匹配,如果它們存在。
例子:myfile[12]
將與 myfile1
和 myfile2
匹配。只要當前⺫⽬目錄中⾄至少有⼀乙個這樣的⽂檔案存在,該通
配符就可以進⾏行擴充套件。
rm myfile[!9]
將刪除除
myfile9
之外的名為
myfile
加⼀乙個字元的所有⽂檔案。
ls /etc/[0-9]*
將列出
/etc
中以數字開頭的所有⽂檔案。
ls /tmp/[a-za-z]*
將列出
/tmp
中以⼤大寫字⺟母或⼩小寫字⺟母開頭的所有⽂檔案。
:同 c1
或者 c2
相匹配。其中
c1 和
c2 也是萬用字元。因此,您可以使用 。
正規表示式
選擇|
豎直分隔符代表選擇。例如
「gray|grey」
可以匹配
grey
或gray。
數量限定
+ 加號代表前面的字元必須至少出現一次。(
1次、或多次)。例如,
「goo+gle」
可以匹配
、gooogle
、goooogle等
? 問號代表前面的字元最多隻可以出現一次。(
0次、或
1次)。例如,
「colou?r」
可以匹配
color
或者colour
* 星號代表前面的字元可以不出現,也可以出現一次或者多次。(
0次、或
1次、或多次)。例如,
「0*42」
可以匹配42、
042、
0042
、00042等。
匹配圓括號可以用來定義操作符的範圍和優先度。例如,
「gr(a|e)y」等價
於「gray|grey」
,「(grand)?father」
匹配father
和grandfather
。上述這些構造子都可以自由組合,因此,
「h(ae?|b)ndel」
和「h(a|ae|b)ndel」
是相同的。
萬用字元 正規表示式
萬用字元 萬用字元是系統級別的 而正規表示式需要相關 工具和語 言的 支援 egrep,awk,vi,perl.當您鍵入ls.txt命令並按enter後,尋找哪些檔案同.txt模式相匹配的任務不是由ls命令,而是由shell自己完成.這需要對命令列是如何被shell解析的作進一步解釋.當您鍵入 ls...
正規表示式,萬用字元
shell中正規表示式和萬用字元 linux上實際操作是什麼情況,就是什麼情況,理論只是猜測,試驗結果大於一切 萬用字元一般是用於匹配符合條件的檔名 例如 ls fei hai 而正規表示式則一般是用於在檔案中匹配符合條件的字串。萬用字元是完全匹配,而正規表示式則是包含匹配。例如命令find nam...
Shell萬用字元 正則 正規表示式
shell萬用字元 正則 正規表示式 shell 中支援使用萬用字元,常用的萬用字元如下 表示任意單個字元 表示任意長度的任意字串 表示匹配放在中的字符集中的任意乙個字串 大括號中的字串中用英文逗號隔開。www.2cto.com 宣告 以下的顯示目錄下的所有檔案不包括遞迴。示例1 顯示當前目錄下ap...