grep是linux中常用的文字過濾工具,按照關鍵字或者正規表示式進行過濾,它是按行匹配的,通常是linux中處理文字的第一步。
grep工具採用的是貪婪匹配,即:匹配當前行中所有的匹配內容。
grep工具如果匹配到了,它的退出碼是0,如果沒有匹配到,它的退出碼是1。
選項
-i 忽略大小寫的不同
-n 同時輸出行號
-v 反向選擇,顯示出沒有'搜尋字串'內容的一行
-o 只輸出檔案中匹配到的部分
-q 安靜模式匹配
-r/r 遞迴查詢
-e 使用擴充套件正則匹配
--color 將匹配得到的內容進行語法高亮
1. 概念正規表示式是用於描述一組字串特徵的模式,用來匹配特定的字串,通過特殊字元+普通字元來進行描述,從而達到文字匹配目的;2. 正規表示式的基本要素正規表示式被整合於各種文字編輯器中和文字處理工具中;
正規表示式基本與語言無關。
正則匹配有三類:基本的正規表示式、擴充套件的正規表示式、perl的正規表示式
字元類3. 字元類數量限定符
位置限定符
特殊符號
字元含義
舉例.
匹配任意乙個字元
a.可以匹配ab、a1等
匹配括號中的任意乙個字元
[ab2]c可以匹配ac、bc、2c
-在內表示字元範圍
[0-9a-f]a可以匹配3a、ba
^在內的開頭,匹配除括號中的字元之外的任意乙個字元
[^ab]2可以匹配x2、z2,但是不可以匹配a2、b2
[[:***:]]
grep工具預定義的一些命令字元類
[[:alpha:]]匹配乙個字母,[[:digit:]]匹配乙個數字
4. 數量限定符
字元含義舉例?
緊跟在它前面的單元應匹配零次或一次
[0-9]?a
匹配1a、2a、a
+緊跟在它前面的單元應匹配一次或多次
[a-za-z0-9_.-]+@[a-za-z0-9_.-]+com
匹配乙個email位址
*緊跟在它前面的單元應匹配零次或多次
[a-za-z_]+[a-za-z_0-9]*
匹配c語言的識別符號
緊跟在它前面的單元應精確匹配n次
[1-9][0-9]
匹配100到999的整數
緊跟在它前面的單元應匹配至少n次
[1-9][[0-9]
匹配100以上的整數
緊跟在它前面的單元應匹配最多m次
[0-9]
相當於[0-9]
緊跟在它前面的單元應匹配至少n次,最多m次
([0-9]\.)[0-9]
匹配ip位址
上面的例子a中,在相關的文件中並未出現,應該是錯誤或者廢棄的用法
5. 位置限定符
字元含義舉例^
匹配行首的位置
^content匹配位於一行開頭的content
$
匹配行末的位置
;$
匹配位於一行結尾為;號,^$
匹配空行
\<
匹配單詞開頭的位置
\>
匹配單詞結尾的位置
p>匹配以p結尾的單詞
\b匹配單詞開頭或結尾的位置
\bat\b匹配at,不匹配cat,batch等
\b匹配非單詞開頭和結尾的位置
\bat\b匹配battery,不匹配attend等
\b用來限定目標串中是否有以指定字串開頭的單詞,稱之為詞界,\b稱為非詞界
^$確定目標串出現的位置,稱之為錨點
6. 特殊符號
字元含義舉例\
轉義字元
\《即將普通字元《轉義為單詞開頭的位置
()將正規表示式的一部分括起來組成乙個單元
|連線兩個子表示式,表示或的關係
基本正規表示式和擴充套件正規表示式的區別:
在基本正則的規範下,?+{}|()
應解釋為普通字元,要表示上述特殊含義則需要加\
轉義。反之,在擴充套件規範下,?+{}|()
應該被理解為特殊含義,要取字面意義,也要對其進行\
轉義。
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...