linux 部分常用 grep 命令詳解

1.作用
 linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。
2.語法格式
grep [OPTION]…PATTERN [FILE] …
3.主要參數
[options]主要參數:
-c:隻輸出匹配瞭多少次。
-i:不區分大小寫(隻適用於單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時隻輸出包含匹配字符的文件名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
-d:跳過對子目錄的搜索
-r: 對子目錄也進行查找
-E: 將樣式為延伸的正則表達式來使用
-o:隻顯示匹配PATTERN 部分。
4.grep正則表達式元字符集(基本集):
\:忽略正則表達式中特殊字符的原有含義。
^:匹配正則表達式的開始行,如:’^grep’匹配所有以grep開頭的行。
$:  匹配正則表達式的結束行,如’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次以上
5.用於egrep和 grep -E的元字符(擴展集)
+      匹配一個或多個先前的字符。如:'[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。
6.舉例
參數不舉例瞭,見名思義,下面主要練習正則表達式
1)正則表達式的運用(過濾出本機IP地址)
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
轉載自:https://blog.51cto.com/yangrong/1541927,並修改。


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/50597/