1砂竖、什么是正則表達(dá)式么介?
作用和特殊字符一樣罪治。
正則表達(dá)式是為處理大量的字符串及文本而定義的一套規(guī)則和方法秋泄。
開(kāi)發(fā)者
假設(shè)"@"代表“I am”,"!"代表“oldboy”规阀,
則執(zhí)行echo "@!"的結(jié)果就是輸出“I am oldboy”恒序。
2、提高效率谁撼,快速獲取到想要的內(nèi)容歧胁。
3、適用于三劍客命令 grep(egrep),sed,awk ? 以行為單位處理厉碟。
易混淆事項(xiàng)
1喊巍、和通配符區(qū)別。
2箍鼓、開(kāi)發(fā)人員正則崭参,一般是Perl兼容正則表達(dá)式。
3款咖、Linux系統(tǒng)三劍客正則表達(dá)式******何暮。
分類(lèi):
1、BRE ?grep
2铐殃、ERE ?egrep
es? ? 匹配e es?
es* ? 匹配e es ess essssss essssssssss 更多s海洼。
?0
0?
代表 自身是 .代表任意一個(gè)字符。
匹配 富腊? 匹配前一個(gè)字符坏逢。
e*s* 和e?s?
e* ?空 e ee eeee eeeeee
s* ?空 s ss sss ssssssssssssss
e*s* 空 es e s ees essssss
e?s? 空 e s es?
e? 空 e
s? 空 s
=========================================
e+ ? ? e ee eee eeeee ?.........
e* ?空 e ee eeee eeeeee .........
e? ?空 e
=========================================
a{n,m} 匹配前一個(gè)字符最少n次,最多m次
a{n,} 匹配前一個(gè)字符最少n次
a{n} 匹配前一個(gè)字符正好n次
a{,m} 匹配前一個(gè)字符最多m次
(0)===\1
(0)(0) ? ?\1 ? ? ? ? ? ? \2
? ? ? ?第一個(gè)括號(hào) ? ?第二個(gè)括號(hào)
egrep -o "(e)(s)\1\2" oldboy.txt ===== egrep -o "eses" oldboy.txt?
特殊預(yù)定義中括號(hào)表達(dá)式
[root@oldboyedu ~/test]# egrep "[0-9]" oldboy.txt?
my qq num is 49000448.
not 4900000448.
[root@oldboyedu ~/test]#?
[root@oldboyedu ~/test]# egrep "[[:digit:]]" oldboy.txt?
my qq num is 49000448.
not 4900000448.
[root@oldboyedu ~/test]# egrep "[[:lower:]]" oldboy.txt?
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu ~/test]# egrep "[[:upper:]]" oldboy.txt?
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu ~/test]# egrep "\boldboy\b" oldboy.txt?
I am oldboy teacher!
[root@oldboyedu ~/test]# egrep "oldboy" oldboy.txt?
I am oldboy teacher!
our site is http://www.oldboyedu.com
[root@oldboyedu ~/test]# egrep -w "oldboy" oldboy.txt?
I am oldboy teacher!
Linux三劍客
awk ?sed ?grep
sed
Sed是操作、過(guò)濾和轉(zhuǎn)換文本內(nèi)容的強(qiáng)大工具是整。
常用功能有對(duì)文件實(shí)現(xiàn)快速增刪改查(增加肖揣、刪除、修改浮入、查詢(xún))龙优,
其中查詢(xún)的功能中最常用的2大功能是過(guò)濾(過(guò)濾指定字符串)和取行(取出指定行)。
sed [選項(xiàng)] ?[sed內(nèi)置命令字符] ?[文件]
選項(xiàng):
-n 取消默認(rèn)sed的輸出舵盈,常與sed內(nèi)置命令的p連用※
-i 直接修改文件內(nèi)容,而不是輸出到終端球化。
如果不使用-i選項(xiàng)sed只是修改在內(nèi)存中的數(shù)據(jù)秽晚,并不會(huì)影響磁盤(pán)上的文件※
sed的內(nèi)置命令字符說(shuō)明
s 替換
g 全局global
p 打印print
d 刪除delete
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
課堂練習(xí)題:
問(wèn)題1:輸出oldboy.txt的第2-3行內(nèi)容※。
sed -n '2,3p' oldgirl.txt?
問(wèn)題2:過(guò)濾出含有oldboy字符串的行※筒愚。
sed -n '/oldboy/p' oldgirl.txt?
問(wèn)題3:刪除含有oldboy字符串的行※赴蝇。
sed '/oldboy/d' oldgirl.txt
sed /oldboy/d oldgirl.txt
問(wèn)題4:將文件中的oldboy字符串全部替換為oldgirl※。
vim替換:
:%s#oldboy#oldgirl#g
sed 's#想替換啥#用啥替換#g' oldgirl.txt
sed 's#oldboy#oldgirl#g' oldgirl.txt?
修改文件:
sed -i 's#oldboy#oldgirl#g' oldgirl.txt?
問(wèn)題5:將文件中的oldboy字符串全部替換為oldgirl巢掺,同時(shí)將QQ號(hào)碼49000448改為31333741句伶。
sed -e 's#oldboy#oldgirl#g' -e 's#49000448#31333741#g' oldgirl.txt I?