Linux Shell指令碼的編程之Regex_linux shell

來源:互聯網
上載者:User

一 Regex與萬用字元

1 Regex是用在檔案中匹配合格字串,正則是包含匹配,grep,awk,sed等命令可以支援Regex

2 萬用字元是用來匹配合格檔案名稱,萬用字元是完全符合,ls,find,cp這些命令不支援Regex,所以只能用Shell自己的萬用字元來進行匹配了。

二 基礎Regex

這裡引用兄弟連的測試文本

 

1 * 前一個字元匹配0次或任意多次

grep “a*” test_rule.txt

匹配所有內容,包括空白行(由於*可以匹配0次)

grep “aa*” test_rule.txt

匹配至少包含有一個a的行

grep “aaa*” test_rule.txt

匹配至少包含有兩個a的行

2 . 匹配除了分行符號之外的任意一個字元

grep “s..d” test_rule.txt

匹配s和d直接一定要有兩個字元的行

grep “s.*d” test_rule.txt

匹配s和d直接任一字元

grep “.*” test_rule.txt

匹配所有內容

3 ^匹配行首 $匹配行尾

grep “^M” test_rule.txt

匹配以大寫M開頭的行

grep “n$” test_rule.txt

匹配以小寫n結尾的行

grep -n “^$” test_rule.txt

匹配空白行

4 [] 匹配括弧中指定的任意一個字元,只匹配一個字元

grep “s[ao]id” test_rule.txt

匹配s和i字母之間,要麼是a,要麼是o的行

grep “[0-9]” test_rule.txt

匹配任意一個數字

grep “^[a-z]” test_rule.txt

匹配用小寫字母開頭的行

5 [^] 匹配除括弧中以外的任意一個字元

grep “^[^a-z]” test_rule.txt

匹配不用小寫字母開頭的行

grep “^[^a-zA-Z]” test_rule.txt

匹配不用字元開頭的行

6 “\” 轉義符

grep “.$” test_rule.txt

匹配以.結尾的行

7 {n} 表示其前面的字元恰好出現n次

grep “a{3}” test_rule.txt

匹配字母a連續出現3次的行

grep “[0-9]{3}” test_rule.txt

匹配包含連續3個數位行

8 {n,} 表示其前面的字元出現不小於n次

grep “^[0-9]{3,}” test_rule.txt

匹配至少連續3個數字開頭的行

9 {n,m} 表示其前面的字元出現不小於n次,最多m次

grep “sa{1,3}i” test_rule.txt

匹配s和i之間最少1個a,最多3個a

好了,Linux Shell編程-Regex就總結到這裡,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對雲棲社區網站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.