shell之文本過濾(Regex)

來源:互聯網
上載者:User

標籤:blog   http   使用   檔案   os   art   

shell之文本過濾(Regex)分類: linux shell指令碼學習2012-09-14 12:59 213人閱讀 評論(0) 收藏 舉報

當從一個檔案或命令輸出中抽取或過濾文本時,可以使用Regex(R E) ,Regex是一些特殊或不很特殊的字串模式的集合。

 

^ 只只匹配行首
$ 只只匹配行尾
* 只一個單字元後緊跟*,匹配0個或多個此單字元
[ ] 只匹配[ ] 內字元。可以是一個單字元,也可以是字元序列。可以使用 -表示[ ]內字元序列範圍,如用 [ 1 - 5 ]代替[ 1 2 3 4 5 ]
\ 只用來屏蔽一個元字元的特殊含義。因為有時在 s h e l l中一些元字元有
特殊含義。\可以使其失去應有意義
. 只匹配任意單字元
p a t t e r n \ { n \ } 只用來匹配前面 p a t t e r n出現次數。n為次數
p a t t e r n \ { n,\ } m 只含義同上,但次數最少為 n
p a t t e r n \ { n,m \ } 只含義同上,但 p a t t e r n出現次數在n與m之間

 

句點"."匹配單字元
1) . : 匹配任意單ASCII 字元,可以為字母,或為數字。
2) 舉例: ..XC..匹配deXC1t、23XCdf 等,.w..w..w.匹配rwxrw-rw-
行首以^匹配字串或字元序列
1) ^ : 允許在一行的開始匹配字元或單詞。
2) 舉例: ^.01 匹配0011cx4、c01sdf 等,^d 匹配drwxr-xr-x、drw-r--r--等
行尾以$匹配字串或字元
1) $ : 在行尾匹配字串或字元,$符號放在匹配單詞後。
2) 舉例: trouble$ 匹配以單詞trouble 結尾的所有行
^$匹配所有空行

使用*匹配字串中的單字元或其重複序列(與檔案名稱置換中的"*"不一樣)
1) * : 一個單字元後緊跟*,匹配0 個或多個此單字元。
2) 舉例: compu*t 將匹配字元u 一次或多次,即匹配computer computing compuuute 等
1033* 可以匹配 101333 10133 1013444 等
3) 在Regex中使用"*",有時會產生非預期的結果。

使用\屏蔽一個特殊字元的含義
1) \ : 用來屏蔽一個元字元的特殊含義。因為有時在shell 中元字元有特殊含義。\可以使其失去應有意義。
2) 舉例: 在Regex中匹配以*.pas 結尾的所有檔案: \*\.pas$

使用[]匹配屬於一個範圍或集合單個字元
1) [ ] : 匹配"[ ]"內的字元。可以是一個單字元,也可以是字元序列。可以使用"-"表示括弧"[ ]"內字元序列範圍,
如用[1-5]代替[12345]。可以用逗號","分隔括弧"[]"內的字元。
2) 當"^"符號當直接靠著"[",意指否定或不匹配括弧"[]"裡內容
3) 舉例: [0-9]匹配任意一個數字;[a-z]匹配任意一個小寫字母;[0-9A-Za-z]匹配任意字母或數字;
[C,c]omputer 匹配Computer 和computer;[^a-zA-Z]匹配任一非字母型字元

使用"\{\}"匹配模式結果出現的次數
1) pattern\{n\}   : 匹配模式pattern 出現n 次的情形。
2) pattern\{n,\}  : 匹配模式pattern 最少出現n 次的情形。
3) pattern\{,m\}  : 匹配模式pattern 最多出現m 次的情形。
4) pattern\{n,m\} : 匹配模式pattern 出現次數在n 與m 之間的情形。
5) 舉例: A\{2\}B 匹配的值為AAB
A\{2,\}B   匹配的值可以是AAB 或AAAAAB,但不能匹配AB
A\{2,4\}B  匹配的值可以是AAB、AAAB、AAAAB,但不能匹配AB 或AAAAAB 等
[0-9]\{4\}CX[0-9]\{4\}  匹配數字出現4 次後跟CX,最後是數字出現4 次的情形
6) 實際上真正的格式是 {n} {n,} {,m} {n,m},只不過對"{"和"}"應用了Esacpe 字元"\"。

經常使用的Regex舉例
[Ss]igna[lL]   匹配單詞signal、signaL、Signal、SignaL
[Ss]igna[lL]\. 同上,但加一句點
^USER$         只包含USER 的行
\.             帶句點的行
^d..x..x..x    對使用者、使用者組及其他使用者、群組成員有可執行許可權的目錄
^[^l]          排除符號連結檔案後的檔案目錄列表(即不是以"l"開始的行)
[yYnN]         大寫或小寫y 或n
^.*$           匹配行中任一字元串
^......$       包括6 個字元的行
[a-zA-Z]       任意單個字母
[a-z]*         至少一個小寫字母
[^0-9\$]       非數字或貨幣符號
[123]          1 到3 中一個數字
\^q            以^q 開始行
^.$            僅有一個字元的行
^\.[0-9][0-9]  以一個句點和兩個數字開始的行
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}               
日期格式dd-mm-yyyy
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}  類IP 位址格式
                                               
nnn.nnn.nnn.nnn
.*             匹配任意多個字元

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.