萬用字元叫做檔名萬用字元更能突出其作用範圍,因為
萬用字元主要用於檔名的通配
,可以在
shell
命令中使用,常用的萬用字元有以下幾個:
* :星號用來匹配
任意長度
的任意字元。
? :問號用來匹配
任意單個字元。
[^]
:匹配指定範圍
之外的任意單個字元。如
[^a-z] = [^[:lower:]]
匹配小寫字母
a-z之外的任意單個字元
:匹配指定
範圍內的任意單個
字元。如
[a-za-z]
匹配大小寫字母中的任意單個字元(實驗時使用
[a-z]
或者[a-z]
或者[a-za-z]
的效果等同,都是大小寫全匹配,此處值得驗證)
[0-9] 匹配0
到9之間的數字
例:如何匹配空白字元?【使用
[' ']
或使用[[:space:]]
,單引號中間有空格】
[[:alpha:]]
相當於[a-za-z]
[[:digit:]]
相當於[0-9]
[[:lower:]]
相當於[a-z]
[[:upper:]]
相當於[a-z]
[[:alnum:]]
相當於[a-za-z0-9]
[[:space:]]
相當於空白字元
注意:上面幾個需要使用雙重中括號,否則匹配不成功,如下面的例子
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]# ls ins[[:lower:]]a*
install.log install.log.syslog
[root@localhost ~]# ls ins[:lower:]a*
ls: ins[:lower:]a*: no such file or directory
正規表示式
正規表示式(
regexp
)又分為基本正規表示式和擴充套件正規表示式。正規表示式和萬用字元不同,
正規表示式是用來匹配字串的。
2、基本正規表示式
元字元:
. :點
用來匹配任意單個字元
匹配次數:
* :星號用來匹配
其前面的字元任意次
.* :點
星號用來匹配
任意字元任意次
預設情況下正規表示式工作於貪婪的模式下(即盡可能長的匹配)
\? :匹配其前面的字元
1次或0次
\ :匹配其前面的字元至少
m次,至多n次。
上面兩個
\反斜線可以理解為是用作轉義字元的。
位置錨定:
行錨定:
^ :用來錨定行首,此字元後面的內容必須在行首
$ :錨定行尾,此字元前面的內容必須出現在行尾
^$ :空白行
單詞錨定:
\或者使用
\b:錨定詞首
\>
或者使用
\b:錨定詞尾
例: 如何匹配出現在行尾的
root
,並忽略
root
後標點符號的行(
root[[:punct:]]*$
)如何匹配出現在行首的
root
,並忽略
root
前空格的行?(
^[[:space:]]*root)
範圍匹配:
:匹配指定範圍內的任意單個字元。如
[a-z] [a-z] [0-9]
。和萬用字元中的一
樣,但此處區分大小寫,即使用
[a-z]
或者[a-z]
或者[a-za-z]
的效果不相同。
[^]:匹配指定範圍外的任意單個字元。
字元集合:(字元集合使用時都要使用雙重中括號)
分組匹配:
\(\)
:例如\(abc\)*
表示abc
作為乙個整體可以出現任意次
後向引用(和分組匹配一起使用):
\1
引用第乙個左括號以及與之對應的右括號包含的所有內容
\2
引用第二個左括號以及與之對應的右括號包含的所有內容
依次類推
3、擴充套件正規表示式
元字元:
和基本正規表示式一樣
匹配次數:
+ 加號相當於基本正規表示式中的
\ :匹配其前面的字元至少一次。
基本正規表示式的
\在擴充套件表示式中不再需要使用反斜線。
其他的和基本正規表示式中的一樣
位置錨定:
和基本正規表示式一樣
範圍匹配:
和基本正規表示式一樣
字元集合:
和基本正規表示式一樣
分組匹配:
基本正規表示式的
\(\)
在擴充套件表示式中不再需要使用反斜線。
後向引用:
和基本正規表示式一樣
正規表示式 和 萬用字元
正規表示式 正規表示式主要是用來描述乙個句法規則的模式。其實說的通俗一點,就是利用字元和元字元的組合,對一些符合既定句法的模式進行模糊匹配。它的主要功能是文字查詢和字串操作。正規表示式的基本元素包括普通字元和元字元,在linux shell裡面,常用的正規表示式元字符集為 s 每乙個元字元都有自己在...
萬用字元和正規表示式
1.like操作符 2.百分號萬用字元 在搜尋串中,表示任何字元出現的任意次數。不能匹配null,如like jet 表示以jet開頭的後面不管多少字元的匹配。如果區分大小寫查詢,使用binary select from test where binary name test 3.下劃線萬用字元 下...
萬用字元 正規表示式
萬用字元 萬用字元是系統級別的 而正規表示式需要相關 工具和語 言的 支援 egrep,awk,vi,perl。當您鍵入 ls txt 命令並按 enter 後,尋找哪些檔案同 txt 模式相匹配的任務不是由 ls 命令,而是由 shell 自己完成。這需要對命令列是如何被 shell 解析的作進一...