1、簡介:
grep是一個最初用於Unix操作系統的命令行工具,在Linux同樣得到了廣泛的使用,這個程序的名稱來自Unix文本編輯器ed類似操作的命令。grep全稱是Globally search for a Regular Expression and print out the line,表示在給出文件列表或標準輸入後,會對匹配一個或者多個正則表達式的文本進行搜索,並只輸出匹配(或者不匹配)的行或文本,Linux下所有用戶皆可使用。
2、格式:
grep [OPTIONS] PATTERN [FILE...]
3、常用選項:
--color=auto:表示使用顏色填充匹配到的內容,使其高亮顯示,效果如下圖:
-v:反向匹配,顯示不能被模式所匹配到的行;
使用-v選項的效果如下圖:
未使用-v選項的效果如下圖:
-i:不區分字符大小寫,效果如下圖:
-o: 僅匹配被模式匹配到的字串,而非整行;
使用-o選項的效果如下圖:
不使用-o選項的效果如下圖:
正常顯示效果:
-A#:#爲數字,表示匹配到內容及其後邊的#行,效果如下圖:
-B#:#爲數字,表示匹配到內容及其前邊的#行,效果如下圖:
-C#: #爲數字,表示匹配到內容及其前後的#行,效果如下圖:
4、正則表達式元字符:正則表達式是一類字符所書寫出來的模式(pattern),元字符:不代表字符 本身的意義,用於額外功能性的描述。
字符匹配:
.:表示匹配任意單個字符,效果如下圖:
[]:表示匹配範圍內的任意單個字符,[^]:表示匹配範圍外的任意單個字符,效果如下圖:
常用範圍表示格式:
[0-9]:表示匹配所有數字,等同於[[:digit:]],效果如下圖:
[[:lower:]]:表示匹配所有小寫字母,等同於[a-z],效果如下圖:
[[:upper:]]:表示匹配所有大寫字母,等同於[A-Z],效果如下圖:
[[:alpha:]]:表示匹配所有大寫字母和小寫字母,效果如下圖:
[[:alnum:]]:表示匹配字母和數字,效果如下圖:
[[:punct:]]:表示匹配標點符號,效果如下圖:
[[:space:]]:表示匹配空白字符,由於空白字符無法顯示顏色這裏取非空白符測試,效果如下圖:
次數匹配:
*:表示匹配之前的字符任意次
\?:表示匹配之前的字符0次或1次
\{m\}:表示匹配之前的字符m次
\{m,n\}:表示匹配之前的字符至少m次,至多n次
\{m,\}:表示匹配之前的字符至少m次
\{0,n\}:表示匹配之前的字符至多n次
位置錨定:
^:錨定行首
$:錨定行尾
^$:空白行
單詞錨定:
\<char:錨定詞首,等同於\bchar
char\>:錨定詞尾, 等同於char\b
\<char\>:表示錨定單詞,等同於\bchar\b
分組:\(pattern\)
引用:\(pattern\).*\1:表示引用前邊分組內容
5、egrep和grep的差異:
增加的元字符
+:表示匹配前邊的字符至少一次
|:表示匹配兩邊的任意一邊,比如x|y,表示匹配x或者y
溫馨提醒:注意有無小括號的區別
變動的元字符
? :等同於grep中的\?
():等同於grep中的\(\)
{}:等同於grep中的\{\}