linux中grep的應用

grep應用正則表達式

1、基本用法

[root@www ~]# grep [-acinv] [--color=auto] '搜尋字符串' filename
選項與參數:
-a :將 binary 文件以 text 文件的方式搜尋數據
-c :計算找到 '搜尋字符串' 的次數
-i :忽略大小寫的不一樣,因此大小寫視爲相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行!
-o :只顯示匹配到的串 --color=auto :能夠將找到的關鍵詞部分加上顏色的顯示
-E : 使用擴展正則表達式
-A number : 匹配到當前行並顯示後number行
-B number :
匹配到當前行並顯示前number行
-C number : 匹配到當前行並顯示先後number行

2、普通正則表達式之字符

一、元字符
spa

     . :匹配任意單個字符code

     []:匹配指定範圍內的任意單個字符blog

     [^]:匹配指定範圍外的任意單個字符ip

二、字符集合ci

3、普通正則表達式之匹配次數(貪婪模式:能匹配多少就匹配多少)

*:匹配其前面的字符任意次字符串

  .*:任意長度的任意字符class

\?:匹配其前面字符的1次或0次bfc

\{m,n\}:匹配其前面的字符至少m次,至多n次擴展

      \{1,\} :最少一次,多了不限

      \{0,3\}

4、普通正則表達式之位置錨定:

^:錨定行首,此字符後面的任意內容必須出如今行首

$: 錨定行尾,次字符前面的任意內容必須出如今行尾

^$:空白符

\<:錨定行首,其後面的任意字符必須做爲單詞首部出現

\>:錨定行尾,其後面的任意字符必須做爲單詞尾部出現

例子:\<root 在行首的單詞 若是是aroot是不行的

        \<root\> 只有徹底匹配root行纔會顯示

5、普通正則表達式之分組 \(\)

\(ab\)* :

            把ab當成一個組實現0次1次或屢次。

 \(\)的後項引用:

\1:引用第一個左括號以及與之對應的右括號所包含的全部內容

\2,\3分別表示引用第二個左括號

例子:grep '\(l..e\).*\1' 

顯示:He love his lover

6、擴展正則表達式(不須要寫\)

注:能夠用grep -E 也可用egrep

字符匹配:

     和普通相同:. 和[],[^]

次數匹配:

         和普通相同:*,?,{m,n}(只是在擴展中不用\)

         和普通不一樣:+:匹配其前面字符至少1次,至關於{1,}

位置錨定

  和普通相同:^,$,\<,\>

分組:

():真正的分組

引用:\1,\2,\3

特殊字符:

| :表示或者的意思

C | cat:表示cat和C.是總體進行或。

 匹配ip地址:

   IPV4:

  5類: A B C D E

A: 1-127

B: 128-191

C: 192-223

      簡單版:

 \<[1-9] | [1-9] [1-9] | 1[0-9] {2} | 2[01] [0-9] | 22[0-3]\>(\.\<[1-9] | [1-9] [1-9] | 1[0-9] {2} | 2[01] [0-9] | 25[0-4]\>){2}\.\<[1-9] | [1-9] [1-9] | 1[0-9] {2} | 2[01] [0-9] | 25[0-4]\>

    可匹配到223.254.254.254

     複雜版:

      ((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))

    可匹配到255.255.255.254

注:正則表達式是貪婪模式,若是須要切換爲非貪婪模式,可使用?來切換。

相關文章
相關標籤/搜索