正則表達式,是使用單個字符串來描述或匹配一系列符合某個句法規則的字符串。一般用來檢索和替換那些符合某個模式的文本內容。正則表達式
經常使用的工具備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行。字符串
(1)、過濾出帶有某個關鍵詞的行,並輸出行號。
(2)、過濾出不帶有某個關鍵詞的行,並輸出行號。
(3)、過濾出全部包含數字的行。
(4)、過濾出全部不包含數字的行。
(5)、過濾全部以#開關的行。
(6)、過濾全部空行和以#開頭的行。
(7)、過濾出任意一個字符和重複字符。
(8)、指定要過濾的字符出現的次數。
egrep是grep的擴展。能夠完成grep不能完成的工做。
(9)、過濾出一個或多個指定的字符。
(10)、過濾出零個或一個指定的字符。
(11)、過濾出字符串1或字符串2。
相對於grep工具,sed不只能進行文本的查找和替換,還能夠把替換的文本輸出到屏幕上。
打印某行。
也能夠指定一個區間打印:
打印包含某個字符的行。
刪除某些行。
也能夠刪除一個區間:
替換字符或者字符串。
參數s表示替換的動做,參數g表示本行全局替換,若是不加g則只替換本行出現的第一個。
除了用/做爲分隔符,還能夠用其餘特殊字符,好比#和@。
刪除文檔中全部的數字和字母:
調換兩個字符串的位置。
()在sed中屬於特殊符號,要在前面加轉義字符\,替換時則寫成相似\一、\2或\3的形式。不過這樣看起來會感受很亂,還有一個方法,就是用參數-r:
直接修改文件的內容。
awk是流式編輯器,針對文檔中的行來操做,一行一行地執行。
截取文檔中的某個段。
-F的做用是指定分隔符。若是不加-F,能夠以空格或者tab爲分隔符。print爲打印的動做,用來打印某個字段,$1爲第1個字段,$2爲第2個字段,以此類推,$0則表示整行。
awk的格式,-F後面跟單引號,單引號裏面爲分隔符。print的動做要用{}括起來,不然會報錯。print還能夠打印自定義的內容,但自定義的內容要用雙引號括起來:
匹配字符或者字符串。
awk還可讓某個段去匹配:
還能夠屢次匹配:
條件操做符
awk中能夠用邏輯符號進行判斷,好比==就是等於,也能夠理解爲精確匹配。另外還有<、<=、>、>=、!=等。
在和數字比較時,若把比較的數字用雙引號引發來,那麼awk不會認爲是數字,而會認爲是字符,不加雙引號則會認爲是數字。
!=表示不匹配:
<表示小於:
&&表示而且:
||表示或者:
awk的內置變量
awk經常使用的變量有OFS、NF和NR。
OFS和-F選項有相似的功能,也是用來定義分隔符的,可是它是在輸出的時候定義:
NF表示用分隔符分隔後一共有多少段,而$NF則表示是最後一段的值。
NR表示行號:
awk中的數學運算
awk能夠更改段值:
awk也能夠對各個段的值進行數學運算: