1. 什麼是grep
- grep它能使用特定模式匹配(包括正則表達式)搜索文本,並默認輸出匹配行。
grep命令的常用格式爲:grep [選項] ”模式“ [文件]
grep家族總共有三個:grep,egrep,fgrep。
2.常用選項
- -v:反過來(invert),只打印沒有匹配的,而匹配的反而不打印。
- -i:忽略大小寫
-q:不向標準輸出寫任何東西。如果找到任何匹配的內容就立即以狀態值 0 退出,即使檢測到了錯誤.
-E:將模式 PATTERN 作爲一個擴展的正則表達式來解釋 。
- -R:遞歸地讀每一目錄下的所有文件。
3.正則表達式與grep的使用
- 正則表達式的概念:
是用於描述一組字符串特徵的模式,用來匹配特定的字符串。通過 特殊字符+普通字符來進行模式描述,從而達到文本匹配目的工具。 - 正則表達式的基本要素
字符類
數量限定符
位置限定符
特殊符號 字符類:
-“.”:表示匹配任意一個字符
- []:表示匹配括號內的任意一個字符
- “-”:表示在括號的的範圍
-“^”:位於[ ]括號內的開頭,匹配出括號中的字符以外的任意一個字符
-“[[:digit:]]:表示匹配任意一個數字
-“[[:alpha:]]”:表示匹配任意一個字母
數量限定符:
- “?”:緊跟在它前面的單元匹配0次或一次
- “+”:緊跟在它前面的單元匹配一次或多次
- “*”:緊跟在它前面的但願匹配0次或多次
- “{N}”:緊跟在它前面的單元精確匹配N次
- “{N,}”:緊跟在它前面的單元應匹配至少N次
- ”{,M}”:緊跟在它前面的單元應匹配最多N次
- “{N,M}”:緊跟在它前面的單元應至少匹配N次,至多匹配M次。
- 位置限定符:
- “^”:匹配行首的位置
-“$”:匹配行末的位置
-“\<”:匹配單詞開頭的位置
-“>”:匹配單詞結尾的位置
-“\b”:匹配單詞開頭或結尾的位置
-“\B”:匹配非單詞開頭或結尾的位置
- 特殊符號:
-“\”:轉義字符,普通字符轉義爲特殊字符,特殊字符轉義爲普通字符。
-“()”:將正則表達式的一部分括起來組成一個單元,可以對整個單元使用數量限定符。
-“|”:連接兩個子表達式,表示或的關係
- 其他字符
- \d: [0-9] 數字字符
- \D: [^0-9] 非數字字符
- \w :[a-zA-Z0-9_] 數字字母下劃線
- \W :[^\w] 非數字字母下劃線
- \s :[_\r\t\n\f] 表格,換行等空白區域
- \S :[^\s] 非空白區域
看上邊發現-E與-P所得的結果不同,看到下面的分類即可明白。 - 正則表達式分類
基本的正則表達式(grep 指令後不跟任何參數,則表示要使用 ”BREs“ )。
擴展的正則表達式(grep 指令後跟 ”-E” 參數,則表示要使用 “EREs“ )。
Perl的正則表達式(grep 指令後跟 “-P” 參數,則表示要使用 “PREs”)。
練習:
1.過濾出手機號碼: