正則

9.1 正則介紹_grep(上)

正則表達式,是使用單個字符串來描述或匹配一系列符合某個句法規則的字符串。一般用來檢索和替換那些符合某個模式的文本內容。正則表達式

經常使用的工具備grep、sed和awk。三者都是針對文本進行操做的。編輯器

grep命令的格式爲:grep [ -cinvABC ] 'word' filename,經常使用的選項有以下:工具

-c:打印符合要求的行數。spa

-i:忽略大小寫。.net

-n:輸出符合要求的行及其行號。3d

-v:反選。blog

-A n:打印符合要求的行以及下面的n行。ci

-B n:打印符合要求的行以及上面的n行。文檔

-C n:打印符合要求的行以及上下各n行。字符串


9.3 grep(下)

(1)、過濾出帶有某個關鍵詞的行,並輸出行號。

(2)、過濾出不帶有某個關鍵詞的行,並輸出行號。

(3)、過濾出全部包含數字的行。

(4)、過濾出全部不包含數字的行。

(5)、過濾全部以#開關的行。

(6)、過濾全部空行和以#開頭的行。

(7)、過濾出任意一個字符和重複字符。

(8)、指定要過濾的字符出現的次數。

egrep是grep的擴展。能夠完成grep不能完成的工做。

(9)、過濾出一個或多個指定的字符。

(10)、過濾出零個或一個指定的字符。

(11)、過濾出字符串1或字符串2。


9.4 sed(上)

相對於grep工具,sed不只能進行文本的查找和替換,還能夠把替換的文本輸出到屏幕上。

打印某行。

也能夠指定一個區間打印:

打印包含某個字符的行。


9.5 sed(下)

刪除某些行。

也能夠刪除一個區間:

替換字符或者字符串。

參數s表示替換的動做,參數g表示本行全局替換,若是不加g則只替換本行出現的第一個。

除了用/做爲分隔符,還能夠用其餘特殊字符,好比#和@。

刪除文檔中全部的數字和字母:

調換兩個字符串的位置。

()在sed中屬於特殊符號,要在前面加轉義字符\,替換時則寫成相似\一、\2或\3的形式。不過這樣看起來會感受很亂,還有一個方法,就是用參數-r:

直接修改文件的內容。

 


9.6 awk(上)

awk是流式編輯器,針對文檔中的行來操做,一行一行地執行。

截取文檔中的某個段。

-F的做用是指定分隔符。若是不加-F,能夠以空格或者tab爲分隔符。print爲打印的動做,用來打印某個字段,$1爲第1個字段,$2爲第2個字段,以此類推,$0則表示整行。

awk的格式,-F後面跟單引號,單引號裏面爲分隔符。print的動做要用{}括起來,不然會報錯。print還能夠打印自定義的內容,但自定義的內容要用雙引號括起來:

匹配字符或者字符串。

awk還可讓某個段去匹配:

還能夠屢次匹配:


9.7 awk(下)

條件操做符

awk中能夠用邏輯符號進行判斷,好比==就是等於,也能夠理解爲精確匹配。另外還有<、<=、>、>=、!=等。

在和數字比較時,若把比較的數字用雙引號引發來,那麼awk不會認爲是數字,而會認爲是字符,不加雙引號則會認爲是數字。

!=表示不匹配:

<表示小於:

&&表示而且:

||表示或者:

awk的內置變量

awk經常使用的變量有OFS、NF和NR。

OFS和-F選項有相似的功能,也是用來定義分隔符的,可是它是在輸出的時候定義:

NF表示用分隔符分隔後一共有多少段,而$NF則表示是最後一段的值。

NR表示行號:

awk中的數學運算

awk能夠更改段值:

awk也能夠對各個段的值進行數學運算:

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息