Linux shell 正規表示式用法

2022-08-20 00:21:13 字數 2967 閱讀 7806

1、「 \  」 用法

用於關閉其後續字元的特殊含義,恢復字元的本身含義,如:\\ 表示字元 \

2、 「 . " 用法

匹配任意單個字元

3、 " * " 用法

匹配任意字元,可以是單個,也可以是多個,和 」.「 字元的去吧是是否可以匹配多個任意字元

4、 "^" 的用法

在行的起始處開始匹配緊接著的字元,如 ^6,匹配行的首字元為6的行。

5、" $ " 的用法

和 「^」 用法相似,表示在行的結尾處開始匹配字元,如 6$,匹配行的結尾字元為6的行。

6 、" [ ] " 的用法

匹配某個範圍內的字元方括號表示式,匹配其內部任何字元。其中-表示連續字元的範圍,^符號置於方括號裡第乙個字元則有反向的含義,即匹配不在列表內(方括號)的任何字元。如果想讓]和-表示其原意,需要將其放置在方括號的首字元位置,如ab]或[-ab],如這兩個字元同時存在,則將]放置在首字元位置,-放置在最尾部,如ab-]。

如[a-ba-z0-9!]表示所有的大小寫字母,數字和感嘆號。[^abc]表示a、b、c之外的所有字元。[tt]om,可以匹配tom和tom。 -] 匹配字元中儲存 ] 或- 的所有字元。

7、 " \ " 用法

區間表示式,用於匹配它前面的單個字元重複出現的次數的區間,如\表示重複n次,\表示至少重複n次;\表示重複n到m次。

如:grep 'ab\' * 可以過濾出 abb、abbb和abbbb ;grep 'ab\' * 可以過濾出 abb、abbb和abbbb

8、 " \(...\) " 用法

圓括號之間的模式儲存在特殊「保留空間」。最多可以將9個獨立的子模式儲存在單個模式中。匹配於子模式的文字,可以通過轉義序列\1到\9,被重複使用在相同模式裡。

如 : \(ab\).*\1表示ab組合出現兩次,兩次之間可存在任何數目的任何字元,如abcdab、abab等,其中 \1 表示匹配 ab

9、 「\b」 的用法

代表著單詞的開頭或結尾,也就是單詞的分界處,如 grep 'he' * 可能會痴線 leh hehe ,但是grep '\bhe\b'  * 只會出現單字元 「he」

**假如你要找的是hi後面不遠處跟著乙個lucy,你應該用\bhi\b.*\blucy\b。

這裡,.是另乙個元字元,匹配除了換行符以外的任意字元。*同樣是元字元,不過它代表的不是字元,也不是位置,而是數量——它指定*前邊的內容可以連續重複使用任意次以使整個表示式得到匹配。因此,.*連在一起就意味著任意數量的不包含換行的字元。現在\bhi\b.*\blucy\b的意思就很明顯了:先是乙個單詞hi,然後是任意個任意字元(但不能是換行),最後是lucy這個單詞。

10、" \d " 的用法

用來匹配任意一位數字

0\d\d-\d\d\d\d\d\d\d\d匹配這樣的字串:以0開頭,然後是兩個數字,然後是乙個連字型大小「-」,最後是8個數字(也就是中國的**號碼。當然,這個例子只能匹配區號為3位的情形)。

這裡的\d是個新的元字元,匹配一位數字(0,或1,或2,或……)。-不是元字元,只匹配它本身——連字元(或者減號,或者中橫線,或者隨你怎麼稱呼它)。

為了避免那麼多煩人的重複,我們也可以這樣寫這個表示式:0\d-\d。這裡\d後面的()的意思是前面\d必須連續重複匹配2次(8次)。

11、 「\s」 的用法

匹配任意的空白符,包括空格,製表符(tab),換行符,中文全形空格

12、 「\w」 的用法

匹配字母或數字或下劃線或漢字

以下**(正規表示式30分鐘入門教程:

\ba\w*\b匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然後是字母a,然後是任意數量的字母或數字(\w*),最後是單詞結束處(\b)。

好吧,現在我們說說正規表示式裡的單詞是什麼意思吧:就是不少於乙個的連續的\w。不錯,這與學習英文時要背的成千上萬個同名的東西的確關係不大 :)

\d+匹配1個或更多連續的數字。這裡的+是和*類似的元字元,不同的是*匹配重複任意次(可能是0次),而+則匹配重複1次或更多次。

\b\w\b 匹配剛好6個字元的單詞。

^\d$ 這裡的和前面介紹過的是類似的,只不過匹配只能不多不少重複2次,則是重複的次數不能少於5次,不能多於12次,否則都不匹配。

因為使用了^和$,所以輸入的整個字串都要用來和\d來匹配,也就是說整個輸入必須是5到12個數字,因此如果輸入的qq號能匹配這個正規表示式的話,那就符合要求了。

和忽略大小寫的選項類似,有些正規表示式處理工具還有乙個處理多行的選項。如果選中了這個選項,^和$的意義就變成了匹配行的開始處和結束處。

13、反義**

**/語法

說明\w

匹配任意不是字母,數字,下劃線,漢字的字元

\s匹配任意不是空白符的字元

\d匹配任意非數字的字元

\b匹配不是單詞開頭或結束的位置

[^x]

匹配除了x以外的任意字元

[^aeiou]

匹配除了aeiou這幾個字母以外的任意字元

當正規表示式中包含能接受重複的限定符時,通常的行為是(在使整個表示式能得到匹配的前提下)匹配盡可能多的字元。以這個表示式為例:a.*b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。

有時,我們更需要懶惰匹配,也就是匹配盡可能少的字元。前面給出的限定符都可以被轉化為懶惰匹配模式,只要在它後面加上乙個問號?。這樣.*?就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。現在看看懶惰版的例子吧:

a.*?b匹配最短的,以a開始,以b結束的字串。如果把它應用於aabab的話,它會匹配aab(第一到第三個字元)和ab(第四到第五個字元)。

表5.懶惰限定符

**/語法

說明*?

重複任意次,但盡可能少重複

+?重複1次或更多次,但盡可能少重複

??重複0次或1次,但盡可能少重複

?重複n到m次,但盡可能少重複

?重複n次以上,但盡可能少重複

Linux shell正規表示式

符 轉義字元。例如 將邏輯否的!看做普通字元,使字元失去本身意義 符匹配字串開始的位置,即以。開頭 符匹配字串結束的位置,即以。結束 符匹配任意乙個字元 符匹配前面表示式0次或n次,即 號前面的字元可以重複0次或多次 a z 匹配a z中任意乙個字母 a z 匹配不在a z這幾個字元的任意字元 匹配...

Linux shell正規表示式 awk

在 linux unix 系統中,awk 是乙個功能強大的編輯工具,逐行讀取輸入文字,並根據指定的匹配模式進行查詢,對符合條件的內容進行格式化輸出或者過濾處理,可以在無互動的情況下實現相當複雜的文字操作,被廣泛應用於 shell 指令碼,完成各種自動化配置任務。1.awk的命令格式如下 1 awk ...

Linux shell正規表示式 sort

sort工具是乙個以行為單位對檔案內容進行排序的工具,也可以根據不同的資料型別來排序。sort 命令的語法為 sort 選項 引數 其中常用的選項包括以下幾種 f 忽略大小寫 b 忽略每行前面的空格 m 按照月份進行排序 n 按照數字進行排序 r 反向排序 u 等同於 uniq,表示相同的資料僅顯示...