Linux 文本處理三兄弟之--Grep

對於使用Linux系統的管理員來說,系統給我們返回的信息有時候真的是太多了,然而我們往往想要得到的信息僅僅是一部分,所以我們就需要一些編輯工具來對輸出的數據流進行過濾。


對grep的介紹以及使用主要從下面幾個方向進行:

1.什麼是grep?
2.爲什麼使用grep?
4.如何使用grep?

那麼就讓我們開始學習grep吧

1.什麼是grep?

首先,需要知道 grep 的全稱是 Global Regular Expression Print,全局正則表達式匹配打印。
在Linux 系統下,grep 可以算是一種文本的搜索工具,能夠使用正則表達式來進行匹配文本,並將匹配到的行進行打印。
那麼什麼是正則表達式尼?
簡單點的理解,正則表達式就是一種使用匹配字符串的公用規則所寫成的表達式。

2.爲什麼使用grep?

使用 grep 的目的就是能夠通過使用它能找到我們想要的信息。當然值得一提的就是 grep其實僅僅 GREP 家族中的一個工具,還有類似於egrep,fgrep,zgrep,zegrep,zfgrep 這些工具。

3.如何使用grep?

說了那麼多的介紹,現在就讓我們開始學習吧!
首先,使用 grep 命令的格式如下:

grep [選項] "模式" [文件]

所以我們一個逐個分析:

一、常用選項:

-E:讓 grep 能夠匹配到擴展(Extend)的正則表達式。
-i :匹配的時候忽略大小寫(Ignore case)。
-v:打印不匹配的,而匹配的不打印(inVert)。
-n:匹配結果打印的時候顯示行號。
-w:被匹配的文本只能是單詞,而不能是單詞中的某一部分。
-c:顯示總共有有多少行被匹配到了,而不是顯示被匹配到內容。
-o:只顯示被模式匹配到的字符串。
--color:將匹配到的內容以顏色高亮顯示。
-A #:顯示匹配到的字符串所在的行以及其後 # 行(After)。
-B #:顯示匹配到的字符串所在的行以及前 # 行(Before)。
-C #:顯示匹配到的字符串所在的行以及前後各 # 行。(Contextt)

二、模式

A 直接鍵入

直接輸入要匹配的字符串,推薦這樣情況下使用 fgrep(Fast grep)

B 正則表達式(Regular Expression)

a)匹配字符

. :任意的一個字符
[abc] :匹配一個字符,僅匹配在中括號內的字符
[^abc]:匹配一個字符,除了脫字符(^)後面的字符
[0-9] :匹配數字0到9的任意一個字符
系統定義了一些常用的字符集
[[:alpha:]] :匹配任意一個英文字母,<==>[a-zA-Z]
[[:digit:]] :匹配任意一個數字,<==> [0-9]
[[:alnum:]] :匹配任意一個英文字母和數字0-9,<==>[a-zA-Z0-9]
[[:space:]] :匹配任意一個空白字符,例如:空格,Tab等
[[:upper:]]:匹配任意一個大寫的英文字母,<==>[A-Z]
[[:lower:]]:匹配任意一個小些的英文字母,<==>[a-z]
[[:punct:]]:匹陪任意一個標點符號
如果想要匹配的就是具有特殊意義的字符,例如:' . ',' ',' [ '等字符,就要對其使用反斜槓進行轉義,*就表示匹配

b)匹配次數

{m,n}:匹配前面出現的字符至少 m 次,至多n次
\?:匹配其前面出現的內容0次或1次 等同於{0,1}
* :匹配其前面出現的內容任意次,等同於{0,},因此.* 代表的就是任意字符任意多次

c)位置錨定

^:錨定行首
$:錨定行尾,所以^$用於匹配空白行
\<:錨定單詞的詞首
\>:錨定單詞的詞尾
\b:錨定單詞,可以是詞首也可是詞尾,例如:\bword\b就僅僅會匹配到word這個單詞

d)分組及引用

(string):將string作爲一個整體,可以後向引用
\1:引用第一個左括號及其對應的右括號匹配的內容
\2:引用第二個左括號及其對應的右括號匹配的內容,以此類推。

C 擴展的正則表達式(Extend RE)要使用-E選項。

a):分組及引用

(string):和基本的正則表達式(string)是相同的,引用部分與基本正則表達式相同。

b):選擇

statement1|statement2:匹配statement1或者statement2,匹配的是或者號( | )兩邊的全部,例如:c|Cat,表示匹配的要麼是c要麼是Cat。
其他的詳細的正則表達式學習,我們在這裏就不一一闡述了


至此,grep 的一些常用的使用,我們都已經說完了,其實有這麼多,還是需要多加練習,將這些融入其中才會完全掌握,當然自己也可以給自己出一些問題然後自己來解決,這樣就會有很快的進步,總之,望君堅持✊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章