Shell 正規表示式與萬用字元

2021-09-08 20:06:28 字數 1513 閱讀 7379

正規表示式與萬用字元:

1. 正規表示式用來在檔案中匹配符合條件的字串,正則是包含匹配。grep、awk、sed等命令可以支援正規表示式。

2. 萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配。ls、find、cp這些命令不支援正規表示式,所以只能使用shell自己的萬用字元來進行匹配。

基礎正規表示式:

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

.      匹配除了換行符外任意乙個字元

^      匹配行首。^abc 即 匹配以abc開頭的行

$      匹配行尾。abc$ 即 匹配以abc結尾的行

匹配中括號中指定的任意乙個字元,只匹配乙個字元。[aeiou]匹配任意乙個母音字母,[0-9][a-z]匹配小寫字母和一位數字構成的兩位字元

[^]     匹配除中括號內的字元以外的任意乙個字元

\       轉義符。用於將特殊符號的含義取消

\    匹配其前面的字元恰好出現n次。[0-9]\ 匹4位數字

\    匹配其前面的字元出現不小於n次。

\    匹配其前面的字元至少出現n次,最多出現m次。[a-z]\ 匹配6到8位的小寫字母

注意:* 在萬用字元中表示任意字元,在正規表示式中表示前乙個字元匹配0次或任意多次。

grep "a*" exp.txt    # 匹配所有內容,包括換行符(就是因為可以匹配0次)

grep "aa*" exp.txt    # 匹配至少含有乙個a的行

grep "aaa*" exp.txt    # 匹配至少包含兩個連續a的字串

grep "a..e" exp.txt    # 匹配在a和e之間有兩個字元的詞

grep "s.*e" exp.txt    # 匹配在a和e之間有任意字元的詞

grep ".*" exp.txt    # 匹配所有內容

grep "^m" exp.txt    # 匹配以m開頭的行

grep "n$" exp.txt    # 匹配以n結尾的行

grep "^$" exp.txt -n    # 匹配所有空白行,-n可以顯示行號

grep "^[a-z]" exp.txt    # 匹配小寫字母開頭的行

grep "a[bc]e" exp.txt    # 匹配abe 或 ace

grep "^[^a-z]" exp.txt    # 匹配不以小寫字母開頭的行

grep "[^a-za-z]" exp.txt    # 匹配除了字母之外的其它字元的行

grep "\.$" exp.txt    # 匹配以.結尾的行

grep "a\" exp.txt    # 匹配a連續出現兩次的行

grep "[0-9]\" exp.txt    # 匹配連續出現兩個數字的行

grep "ab\" exp.txt    # 匹配a後有1-3個b的行

link:

@黑眼詩人 

Shell正規表示式與萬用字元

正規表示法 就是處理字串的方法,他是以行為單位來進行字串的處理行為,透過一些特殊符號的輔助,可以讓使用者輕易的達到 搜尋 刪除 取代 某特定字串的處理程式 萬用字元和正規表示法的區別 萬用字元代表的是bash操作介面的乙個功能,但正則表示法是一種字串處理的 表示法 只要工具程式支援這種表示法,那麼該...

Shell萬用字元 正則 正規表示式

shell萬用字元 正則 正規表示式 shell 中支援使用萬用字元,常用的萬用字元如下 表示任意單個字元 表示任意長度的任意字串 表示匹配放在中的字符集中的任意乙個字串 大括號中的字串中用英文逗號隔開。www.2cto.com 宣告 以下的顯示目錄下的所有檔案不包括遞迴。示例1 顯示當前目錄下ap...

萬用字元與正規表示式

萬用字元與正規表示式很容易混淆,首先要明白二者是不同的,個人感覺萬用字元用於linux的shell命令 如檔名相關操作 中,而正規表示式用於文字內容中的字串搜尋和替換等。萬用字元是linux系統本身就支援的,而正規表示式用於vim編輯器或awk程式,這些文字處理工具正是由於支援正規表示式才變得強大。...