二、萬用字元
1.
regexp: regular expressions,由一類特殊字元及文字字元所編寫的模式,
其中有些字元(元字元)不表示字元字面意義,而表示控制或通配的功能
2.程式支援:grep,sed,awk,vim, less,nginx,varnish等
3.分兩類:
基本正規表示式:bre
擴充套件正規表示式:ere
grep -
e, egrep
4.正規表示式引擎:
採用不同演算法,檢查處理正規表示式的軟體模組
pcre(perl compatible regular expressions)
5.元字元分類:字元匹配、匹配次數、位置錨定、分組
6.man 7 regex
字元匹配:
. 匹配任意單個字元
匹配指定範圍內的任意單個字元,示例:[wang][0
-9][a-z]
[a-za-z]
[^] 匹配指定範圍外的任意單個字元
[:alnum:
] 字母和數字
[:alpha:
] 代表任何英文大小寫字元,亦即 a-z
, a-z
[:lower:
] 小寫字母 [
:upper:
] 大寫字母
[:blank:
] 空白字元(空格和製表符)
[:space:
] 水平和垂直的空白字元(比[
:blank:
]包含的範圍廣)
[:cntrl:
] 不可列印的控制字元(退格、刪除、警鈴...)
[:digit:
] 十進位制數字 [
:xdigit:
]十六進製制數字
[:graph:
] 可列印的非空白字元
[:print:
] 可列印字元
[:punct:
] 標點符號
匹配次數:用在要指定次數的字元後面,用於指定前面的字元要出現的次數
* 匹配前面的字元任意次,包括0次
貪婪模式:盡可能長的匹配
.* 任意長度的任意字元
\? 匹配其前面的字元0或1次
\+ 匹配其前面的字元至少1次
\ 匹配前面的字元n次
\ 匹配前面的字元至少m次,至多n次
\ 匹配前面的字元至多n次
\ 匹配前面的字元至少n次
位置錨定:定位出現的位置
^ 行首錨定,用於模式的最左側
$ 行尾錨定,用於模式的最右側
^pattern$ 用於模式匹配整行
^$ 空行 ^[
[:space:]]
*$ 空白行
\< 或 \b 詞首錨定,用於單詞模式的左側
\> 或 \b 詞尾錨定,用於單詞模式的右側
\<
pattern\> 匹配整個單詞
1.分組:\(\) 將乙個或多個字元**在一起,當作乙個整體處理,如:\(root\)\+
2.分組括號中的模式匹配到的內容會被正規表示式引擎記錄於內部的變數中,這些
變數的命名方式為: \1
, \2
, \3
,...
3.\1 表示從左側起第乙個左括號以及與之匹配右括號之間的模式所匹配到的字元
4.示例: \(string1\(string2\)\)
\1 :string1\(string2\)
\2 :string2
1.後向引用:引用前面的分組括號中的模式所匹配字元,而非模式本身
2.或者:\|
示例:a\|b a或b
c\|cat c或cat
\(c\|c\)at cat或cat
egrep = grep -
eegrep [
options
]pattern
[file
...]
1.字元匹配:
. 任意單個字元
指定範圍的字元 [^
] 不在指定範圍的字元
2.次數匹配:
* 匹配前面字元任意次
?0或1次
+1次或多次
匹配m次
至少m,至多n次
3.位置錨定:
^ 行首
$ 行尾
\<
, \b 語首
\>
, \b 語尾
4.分組:()
後向引用:\1
, \2
,...
5.或者:
a|b a或b
c|cat c
或cat(c
|c)at cat或cat
萬用字元是shell在做pathnameexpansion時用到的。說白了一般只用於檔名匹配,
它是由shell解析的,比如find,ls,cp,mv等。
shell 除了有萬用字元之外,還有一系列自己的其他特殊字元。
字元 說明
ifs 由 或 或
三者之一組成
(我們常用 space )
cr 由 enter> 產生
= 設定變數
$ 取變數值或取運算值
> 重定向 stdout
< 重定向 stdin
| 管道符號
& 重導向 file descriptor ,或將命令置於背景執行
() 將其內的命令置於 nested subshell 執行,或用於運算或命令替換
將其內的命令置於 non-named function 中執行,或用在變數替換的界定範圍
; 在前乙個命令結束時,而忽略其返回值,繼續執行下乙個命令
&& 在前乙個命令結束時,若返回值為 true,繼續執行下乙個命令
|| 在前乙個命令結束時,若返回值為 false,繼續執行下乙個命令
! 運算意義上的非(not)的意思
# 注釋,常用在指令碼中
\ 轉移字元,去除其後緊跟的元字元或萬用字元的特殊意義
有時候,我們想讓 萬用字元,或者元字元 變成普通字元,不需要使用它。
那麼這裡我們就需要用到轉義符了。 shell提供轉義符有三種。
字元 說明
『』(單引號) 硬轉義,其內部所有的shell 元字元、萬用字元都會被關掉。
「」(雙引號) 軟轉義,其內部只允許出現特定的shell 元字元:$用於引數替換 `(反單引號,esc鍵下面)用於命令替換
\(反斜槓) 又叫轉義,去除其後緊跟的元字元或萬用字元的特殊意義
linux 命令 正規表示式
1.cut擷取以 分割保留第七段 grep hadoop etc passwd cut d f7 2.排序 du sort n 3.查詢不包含hadoop的 grep v hadoop etc passwd 4.正則表達包含hadoop grep hadoop etc passwd 5.正則表達 點...
grep命令 正規表示式
linux系統中grep是一種強大的文字搜尋工具,按照關鍵字或正規表示式過濾文字,並把匹配的行列印出來。grep的全稱是global regular expression print,表示的是全域性正規表示式版本,使用許可權時所有使用者。e 在擴充套件正則模式下 p 在perl正則模式下 v 將不匹...
Shell命令 正規表示式
正規表示式是包含匹配,萬用字元是完全匹配 基礎正規表示式 test.txt示例檔案12 3456 78910 1112 mr.james said he was the honestmanincompanyy.123despire him.but since miss.mary came,she n...