標籤:
Regex是一種符號標記法,用於識別文字模式。Linux處理Regex的主要程式是grep。grep搜尋與Regex匹配的行,並將結果輸送至標準輸出。
1. grep匹配模式
grep按下述方式接受選項和參數(其中,regex表示Regex)
| 1 |
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:] |
空白字元,等價於[\t\r\n\v\f] |
| [:punct:] |
標點符號 |
| [:cntrl:] |
ASCII控制碼,包括字元0~31以及127 |
例子
原文地址:http://www.codeceo.com/article/linux-reg-usage.html
【轉】LinuxRegex使用指南