grep [OPTION]...PATTERN [FILE] ...
[options]主要參數:
-c:隻輸出比對了多少次。
-i:不區分大小寫(隻适用于單字元)。
-h:查詢多檔案時不顯示檔案名。
-l:查詢多檔案時隻輸出包含比對字元的檔案名。
-n:顯示比對行及行号。
-s:不顯示不存在或無比對文本的錯誤資訊。
-v:顯示不包含比對文本的所有行。
-d:跳過對子目錄的搜尋
-r: 對子目錄也進行查找
\:忽略正規表達式中特殊字元的原有含義。
^:比對正規表達式的開始行,如:'^grep'比對所有以grep開頭的行。
$: 比對正規表達式的結束行,如'grep$'比對所有以grep結尾的行。
\<:從比對正規表達式的行開始。如'\<grep'比對包含以grep結尾的單詞的行。
[]:比對一個指定範圍内的字元,如'[Gg]rep'比對Grep和grep。需要特別留意的是,在 [] 當中『僅代表一個待搜尋的字元』
[ n1-n2 ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求 。
. :所有的單個字元。
* :有字元,長度可以為0。
\(..\):标記比對字元,如'(love)',love被标記為1。
\{n,m\}:意義:重複前一個字元n-m個,若為\{n\}則是重複前一個字元n次,若是 \{n,\}則是重複前一個字答n次以上
+ 比對一個或多個先前的字元。如:'[a-z]+able',比對一個或多個小寫字母後跟able的串,如loveable,enable,disable等。
? 比對零個或多個先前的字元。如:'gr?p'比對gr後跟一個或沒有字元,然後是p的行。
a|b|c 比對a或b或c。如:grep|sed比對grep或sed
() 分組符号,如:love(able|rs)ov+比對loveable或lovers,比對一個或多個ov。
參數不舉例了,見名思義,下面主要練習正規表達式
1)正規表達式的運用(過濾出本機IP位址)
[root@yang1 lesson-1]# ifconfig eth0|grep 'inetaddr:'|sed 's/^.*addr:\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\) Bcast.*/\1/g'
10.0.0.29
解析:^.* 以任意字元開頭,并重複0次或多次
[0-9]\{1,3\} 重複比對0-9中的字元1次或2次或3次
\( ……\) 标記比對字元,第一個\(\)标記為1,第二個\(\)标記為2
\1 取第1個标記中的内容
s/aa/b/g 屬于sed中的替換功能,把aa替換為b,例中把比對的一行替換為标記1中的内容
2)egrep擴充表達式運用
過濾出多個行要使用egrep
[root@yang1lesson-1]# ifconfig eth0|grep 'inet|inet6'
[root@yang1lesson-1]# ifconfig eth0|egrep 'inet|inet6'
inet addr:10.0.0.29 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr:fe80::20c:29ff:fe6a:4121/64 Scope:Link
其它+? ()同理,需要使用egrep或grep -E
本文轉自楊雲1028 51CTO部落格,原文連結:http://blog.51cto.com/yangrong/1541927,如需轉載請自行聯系原作者