grep應用正則表達式
[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行
一、元字符
spa
. :匹配任意單個字符code
[]:匹配指定範圍內的任意單個字符blog
[^]:匹配指定範圍外的任意單個字符ip
二、字符集合ci
*:匹配其前面的字符任意次字符串
.*:任意長度的任意字符class
\?:匹配其前面字符的1次或0次bfc
\{m,n\}:匹配其前面的字符至少m次,至多n次擴展
\{1,\} :最少一次,多了不限
\{0,3\}
^:錨定行首,此字符後面的任意內容必須出如今行首
$: 錨定行尾,次字符前面的任意內容必須出如今行尾
^$:空白符
\<:錨定行首,其後面的任意字符必須做爲單詞首部出現
\>:錨定行尾,其後面的任意字符必須做爲單詞尾部出現
例子:\<root 在行首的單詞 若是是aroot是不行的
\<root\> 只有徹底匹配root行纔會顯示
\(ab\)* :
把ab當成一個組實現0次1次或屢次。
\(\)的後項引用:
\1:引用第一個左括號以及與之對應的右括號所包含的全部內容
\2,\3分別表示引用第二個左括號
例子:grep '\(l..e\).*\1'
顯示:He love his lover
注:能夠用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
注:正則表達式是貪婪模式,若是須要切換爲非貪婪模式,可使用?來切換。