2021-05-12 14:32:11
Linux正規表示式grep基礎入門
2020-06-16 16:50:16
正規表示式是一種符號表示法,用於識別文字模式。Linux處理正規表示式的主要程式是grep。grep搜尋與正規表示式匹配的行,並將結果輸送至標準輸出。
1. grep匹配模式
grep按下述方式接受選項和引數(其中,regex表示正規表示式)
grep [options] regex [files]
其中options主要為下表:
選項 | 含義 | 功能描述 |
-i | ignore case | 忽略大小寫 |
-v | invert match | 不匹配匹配的 |
-l | file-with-match | 輸出匹配的檔名 |
-L | file-without-match | 輸出不匹配的檔名 |
-c | count | 輸出匹配的數目(行數) |
-n | number | 輸出匹配行的同時在前面加上檔名及在檔名中的行數 |
-h | no-filename | 抑制檔名的輸出 |
舉例說明
假設有三個檔案del1、del2、del3三個檔案的內容如下
例子
2. 特殊字元
符號 | 含義 | 舉例 |
^ | 開始標記 | "^abc"滿足的例子abc、abcd |
^ | 非(在[]內) | "[^abc]"滿足的例子:ddd、mpd |
$ | 結束標記 | ”abc$”滿足的例子abc、mmabc |
. | 任意字元 | "a.c"滿足的例子abc、fapcc |
< | 匹配單詞開始 | "<abc"滿足的例子abc、abcd |
> | 匹配單詞結束 | "abc>"滿足的例子abc、pmrabc |
| | 或 | "AAA|BBB"滿足的例子AAA、BBBpp |
3. 範圍
符號 | 含義 | 舉例 |
? | 匹配前一個字元0或1次 | "abc?"滿足的例子ab、mabcd |
* | 匹配前一個字元≥0次 | "abc*"滿足的例子abbb、abcdk |
+ | 匹配前一個字元≥1次 | "abc+"滿足的例子abcd、abcccdd |
{} | {m}、{m,n}、{m,}、{,n}分別為匹配前一個字元m次、m到n次、≥m次、≤n次 | "abc{3,5}"滿足的例子abcccc、abcccccc |
[] | []內如果不是範圍,選其一;是範圍的話,範圍內選其一 | "m[abc]p"滿足的例子acpd;m[1-9]p滿足的例子m8pp |
() | 將候選的所有元素放在()內,用|隔開 | "a(1|2|3)bc"滿足的例子a1bc、mba3bcd |
注意:{}在鄭則表示式中需要轉移,而{}()不需要。
注意理解{}範圍的例子:
4. 標準字元類
字元類 | 釋義 |
[:alnum:] | 字母和數位,與[A-Za-z0-9]等價 |
[:word:] | [:alnum:]加上下劃線_ |
[:alpa:] | 字母,與[A-Za-z]等價 |
[:digit:] | 數位,與[0-9]等價 |
[:xdigit:] | 十六進位制字元,與[0-9A-Fa-f等價] |
[:blank:] | 空格和製表符 |
[:graph:] | 可見字元,靠擴33~126 |
[:lower:] | 小寫字母 |
[:upper:] | 大寫字母 |
[:print:] | 可列印字元 |
[:space:] | 空白字元,等價於[trnvf] |
[:punct:] | 標點符號 |
[:cntrl:] | ASCII控制碼,包括字元0~31以及127 |
例子
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-07/153110.htm
相關文章