Linux正則表達(dá)式及三劍客知識(shí)應(yīng)用實(shí)踐
一、正則表達(dá)式
正則表達(dá)式是為了處理大量的字符串及文本而定義的一套規(guī)則和方法。
可以提高效率,快速獲得想要的到的內(nèi)容;
適用于三劍客命令:grep(egrep),sed,awk,工作時(shí)以行為單位進(jìn)行處理。
二、易混淆事項(xiàng)
1、和通配符區(qū)別
2、開發(fā)正則,一般是Prel兼容正則表達(dá)式
3、linux系統(tǒng)三劍客正則表達(dá)式。
三、正則表達(dá)式分類:
1、BRE 基本正則表達(dá)式
^? 匹配以。。。開頭的行
$ 匹配以。。。結(jié)尾的行
^$ 空行
. 匹配任意一個(gè)且只有一個(gè)字符
\ 轉(zhuǎn)義字符,讓原本有意義的字符脫掉馬甲,還原本意
* 匹配前一個(gè)字符0次或多次
.* 匹配所有內(nèi)容
^.* 匹配任意一個(gè)或多個(gè)字符開頭的內(nèi)容
.*$ 匹配任意一個(gè)或多個(gè)字符結(jié)尾的內(nèi)容
[abc] 匹配[ ]內(nèi)任意一個(gè)字符a或b或c
[^abc] 匹配不包含^后任意字符a或b或c
2、擴(kuò)展正則表達(dá)式
+ 匹配前面一個(gè)字符1次或多次
[]+ 匹配[]內(nèi)任意一個(gè)字符1次或多次
?匹配前一個(gè)字符0次或1次
| 或者 同時(shí)過濾多個(gè)字符串
() 分組過濾括號(hào)括起來的內(nèi)容,表示一個(gè)整體
\n 引用前面()里的內(nèi)容
a{n,m} 表示匹配一個(gè)字符最少n次最多m次
a{n,}表示匹配一個(gè)字符最少n次
a{n}表示匹配一個(gè)字符n次
a{,m}表示匹配一個(gè)字符最多m次
四、Linux三劍客
awk、sed、grep
1、sed
sed是操作、過濾和轉(zhuǎn)換文本內(nèi)容的強(qiáng)大工具。
常用功能有與文件實(shí)現(xiàn)快速增刪改查。
其中查詢的功能中最常用的兩大功能是過濾(過濾指定位字符串)和取行(取出指定行)。
語法格式:sed? [選項(xiàng)] [sed內(nèi)置命令字符] [輸入文件]
選項(xiàng):
-n 取消默認(rèn)sed的輸出(只顯示過濾內(nèi)容),常于sed內(nèi)置命令的p連用*****
-i 直接修改文件內(nèi)容,而不是輸出到終端。
如果不使用-i選項(xiàng)sed只是修改在內(nèi)存中的數(shù)據(jù),并不會(huì)影響磁盤上的文件*****
sed的內(nèi)置命令字符功能說明
s 替換
g 全局
p 打印
d 刪除
實(shí)踐練習(xí):
1、輸出oldboy.txt的第2-3行內(nèi)容。*****
sed -n '2,3p' oldboy.txt
2、過濾出含有oldboy字符串的行*****
sed -n? '/oldboy/p' test.txt?
3、刪除含有oldboy字符串的行。*****
sed? '/oldboy/d' test.txt
4、將文件中的oldboy字符串全部替換為oldgirl。*****
sed? 's#oldboy#oldgirl#g' test.txt