grep的作用:文本搜索工具,根據用戶指定的“模式”對目標文件逐行進行匹配檢查:列印匹配到的行。 模式:正則表達式編寫的過濾條件。 正則表達式(REGEXP):由一類特殊字元及文本字元所編寫的模式,其中有一些字元不表示字元字面意義,而表示控制或通配的功能。 分成兩類: 基本正則表達式:BRE 擴展正 ...
grep的作用:文本搜索工具,根據用戶指定的“模式”對目標文件逐行進行匹配檢查:列印匹配到的行。
模式:正則表達式編寫的過濾條件。
正則表達式(REGEXP):由一類特殊字元及文本字元所編寫的模式,其中有一些字元不表示字元字面意義,而表示控制或通配的功能。
分成兩類:
基本正則表達式:BRE
擴展正則表達式:ERE(grep -E,egrep)
grep的使用:
grep [選項] 模式 [文件...]
選項:
--color=auto: 對匹配到的文本著色顯;
-v:顯示不被”模式“匹配的行;
-i:忽略字元大小寫;
-o:僅顯示匹配到的字元串;
-q: 靜默模式,不輸出任何信息;
-A #:顯示匹配行與後#行;
-B #:顯示匹配行與前#行;
-C #:顯示匹配行與前後各#行;
-E:使用ERE(相當於,egrep)
基本正則表達式元字元:
字元匹配:
.: 匹配任意單個字元;
[]: 匹配指定範圍內的任意單個字元
[^]: 匹配指定範圍外的任意單個字元
[:alnum:]: 代表英文大小寫字元及數字,及a-z,A-Z,1-9
[:alpha:]: 代表英文大小寫字元,及a-z,A-Z
[:cntrl:]: 代表控制按鍵,CR、LF、Tab、Del等
[:digit:]: 代表數字,1-9
[:graph:]: 除了空格鍵與Tab鍵以外的所有按鍵
[:lower:]: 代表小寫字母,a-z
[:print:]: 代表任何可以被列印出來的字元
[:punct:]: 代表標點符號,即"'?!;:#$
[:space:]: 任何會產生空白的字元,包括空格鍵[Tab]CR等
[:upper:]: 代表大寫字母,A-Z
[:xdigit:]: 代表十六進位的數字類型,因此包括0-9,A-F,a-f的數字與字元
註:以上[:***:]需要雙中括弧使用,即: [[:***:]]
匹配次數:
*:匹配前面的字元0次或多次;
.:匹配任意單個字元;
.*:即匹配任意字元0次或多次;
\?:匹配前面的字元0次或1次;
\+:匹配前面的字元1次或多次;
\{m\}:匹配前面的字元m次;
\{m,n\}: 匹配前面的字元至少m次,至多n次;
\{0,n}:匹配前面的字元至多n次;
\{m,\}:匹配前面的字元至少m次;
位置錨定:
^:行首錨定,用於模式最左側;
$:行尾錨定,用於模式最右側;
\< 或 \b:詞首錨定,用於單詞模式的左側;
\> 或 \b:詞尾錨定,用於單詞模式的右側
分組及後向引用:
\(\):將一個或多個字元捆綁起來,當作一個整體進行處理
後向引用:應用前面的分組括弧中模式所匹配的字元(而非模式本身),\1,\2....\n
例如:\(abc*\(def\)ghe\?\)
\1:abc*\(def\)ghe\? 對應第一個左括弧所在括弧中的內容
\2:def 對應第二個左括弧所在括弧中的內容
擴展正則表達式元字元:
同上正則表達式:區別在於特殊符號不需要使用“\”進行轉義。?等於\?,()等於\(\),{m}等於\{m\},+等於\+。 註:\<,\>,\b仍然需要加“\”
n|m:|匹配左邊或右邊的所有內容
例如:
abc|def 匹配abc或def,預設匹配左右邊所有字元,可用()進行分組,如下
ab(c|de)f 匹配c|de