regular expression engine
描述匹配模式的特殊字元和一般字元組成;
bre posix
基本正規表示式,
ere擴充套件正規表示式;
gawk
支援ere
,sed
不支援。
1)
正規表示式模式:l
區分大小寫 l
空格作為普通字元處理 l
工具或語言中的使用模式常為
/pattern/
特殊字元:
.*^${}/+?|()
正斜扛也需要轉義,雖然它不是特殊字元——因為
/被用作表示模式? 如
sed -n '/^abc/p';^
必須放到正規表示式的最前,否則作為普通字元
sed -n '/abc$/p';
eg:查詢整行
, '/^this$/p'
;查詢空行
'/^$/d';
匹配換行符外的任何單字元,必須有乙個字元;
character class
(幾個字元之一),如
sed -n '/[yy]es/p'
否定字元類,使用
[^],如
[^ch]
,表示不含這幾個字元,但是仍然需要乙個字元;
定義字元範圍,如
[0-9]
,[a-z]
,[a-cx-z
]定義多個範圍
[[:alpha:]]
任意字母字元,大小寫
[[:alnum:]]
任意字母、數字
[[:blank:]]
空格或製表符
[[:digit:]] 數字
[[:lower:]]
任意小寫
[[:print:]]
任意可列印
[[:punct:]]
標點符號
[[:space:]]
任意空白字元,
包括垂直製表符,
如空格,lt,
nl,cr等
[[:upper:]]
任意大寫
[[:cntrl:]] ascii
控制字元
[[:graph:]]
非控制非空格
[[:xdigit:]] 16
進製數字 *
前的字元可不出現或多次出現,
/colou*r/ 「
.*」,出現在一行文字上任意位置的單詞 *
用於字元類:
eg: $echo "bt" | sed -n '/b[ac]*t/p' #tbd
:ac可任意出現? 同
*的不同:不出現或僅出現一次,也可與字元類連用 同
*的不同:必須出現一次或多次
對可重複字元出現次數進行限制
(interval),或
,/,{m,
}表示最少m次
bet #
等價於bet ?
gawk
中需指定引數
--re-interval,
eg:
echo "bt"|gawk --re-interval '/bet/'
用於字元類:
gawk --re-interval "/b[ae]t" 邏輯
or,指定多個正規表示式,
gawk '/cat|dog/'
分組,乙個組合作為乙個標準字元處理,
eg:
gawk '/sat(urday)?/ #
要求urday
出現0 到1
次; gawk '/(c|b)a(b/t)/' #tbd
:等價於
'[cb]a[bt]'??
shell正規表示式
句點 匹配單字元 1 匹配任意單ascii 字元,可以為字母,或為數字。2 舉例 xc.匹配dexc1t 23xcdf 等,w.w.w.匹配rwxrw rw 行首以 匹配字串或字串行 1 允許在一行的開始匹配字元或單詞。2 舉例 01 匹配0011cx4 c01sdf 等,d 匹配drwxr xr ...
shell正規表示式
句點 匹配單字元 1 匹配任意單ascii 字元,可以為字母,或為數字。2 舉例 xc.匹配dexc1t 23xcdf 等,w.w.w.匹配rwxrw rw 行首以 匹配字串或字串行 1 允許在一行的開始匹配字元或單詞。2 舉例 01 匹配0011cx4 c01sdf 等,d 匹配drwxr xr ...
shell 正規表示式
一 從頭開始 echo the book sed n the p 二 結尾 三 聯合定位 this is a test 四 點字元 用於匹配除換行符之外的任何乙個單一字元 五 字元類 定義一類字元,用於匹配文字模式中的某一位置 例如 echo n ch at p data the cat is sl...