1、grep
grep是g一種查找過濾工具,grep支持正則表達式
2、正則表達式
規定一些特殊語法表示字符類、數量限定符和位置關係,然後用這些特殊語法和普通字符一起表示 一個模式,這就是正則表達式。
形式:' 表達式內容 '
1)字符類
. 匹配任意字符的一次出現
[] 匹配括號中的任意字符的一次出現
- 在[]內表示字符範圍
^ 例如:[^xy] 匹配除括號內字符之外的任意字符的一次出現
[[:digit:]] 匹配一個數字 [[:alpha:]] 匹配一個字母
2)數量限定符
? 緊跟在它前面的單元匹配零次或一次
+ 緊跟在它前面的單元匹配一次或多次
* 緊跟在它前面的單元匹配零次或多次
{N} 緊跟在它前面的單元匹配N次
{N,} 緊跟在它前面的單元匹配至少N次
{N,M} 緊跟在它前面的單元匹配至少N次,最多M次
3)位置限定符
^ 匹配行首的位置
$ 匹配行尾的位置
\< 匹配單詞開頭的位置
\> 匹配單詞結尾的位置
\b 匹配單詞開頭或結尾的位置
\B 匹配不是單詞開頭或結尾的位置
4)特殊字符
\ ? + {} | ()
這些字符在擴展正則和基準正則有不同的含義,在基準正則中代表普通字符,想要使用其特殊含義需要轉義字符轉義;在擴展正則中代表特殊含義字符,想要使用其普通含義需要轉義字符轉義。
例如:匹配合法的手機號碼
解析命令
3、grep選項
--colour 高亮顯示
-l 查詢多文件時只輸出包含匹配字符的文件名
-L 打印不匹配模板的文件清單
-n 顯示匹配行及行號
-s 不顯示不存在或無匹配文本的錯誤信息
-? 同時顯示匹配行上下的?行,如:grep -2 pattern filename同時顯示匹配行的上下2行
-c 只打印匹配的行數,不顯示匹配的內容
-h 當搜索多個文件時,不顯示匹配文件名前綴
-i 忽略大小寫差別
-o 只顯示正則表達式匹配的部分
-q 取消顯示,只返回退出狀態。0則表示找到了匹配的行
-v 反檢索,只顯示不匹配的行
-w 如果被\<和\>引用,就把表達式做爲一個單詞搜索
-R, -r, 遞歸的讀取目錄下的所有文件,包括子目錄。 比如grep -R 'pattern' test會在 test 及其子目錄下的所有文件中,匹配 pattern
-V 顯示軟件版本信息
4、grep與egrep
egrep命令等同於grep -E,利用此命令可以使用擴展的正則表達式對文本進行搜索,並把符合用戶需求的字符串打印出來。
5、grep與fgrep
fgrep命令等同於grep -F,它利用固定的字符串來對文本進行搜索,但不支持正則表達式的引用,所以此命令的執行速度也最快。