3.19Day14課堂筆記(正則表達式與sed流編輯器)

第十一章?[endif]Linux正則表達式與三劍客知識應用實踐

1、什么是正則表達式:

作用和特殊字符一樣

正則表達式是為處理大量的字符串及文本而定義的一套規則和方法

假設@代表“i am”, ?“!”代表“oldboy”

則執行ceho“@!”就表示輸出“i am oldboy”

2、提高效率,快速獲取到想要的內容

3、適用于三劍客命令:grep(egrep), sed ,awk

以行為單位處理,

4、實踐講解

易混淆事項

1、 和通配符區別

2、和開發正則有區別。一般是perl兼容正則表達式。

3、 Linux系統三劍客

環境準備:

export ?LC_ALL=C

分類

1、BRE ? grep

2、GRE? 加-E或egrep

Test目錄輸入這些進行環境準備

mkdir?~/test?-pcat?>~/test/oldboy.txt<<EOF

I?am?oldboy?teacher!I?teach?linux.I?like?badminton?ball?,billiard?ball?and?chinese?chess!our?site?is?http://www.oldboyedu.commy?qq?num?is?49000448.not?4900000448.my?god?,i?am?not?oldbey,but?OLDBOY!EOF


ls -lF /data|grep “/$”查找斜線結尾

cat oldboy.txt -n (顯示行號查找)


Linux 正則符號釋義

基本正則:grep開頭搜索等

^尖角號 以。。。開頭 ^oldboy 以oldboy開頭

$美元符 以。。。結尾 oldboy$ 以oldboy結尾

^$ 空行 以開頭結尾,以結尾開頭

. 匹配任意一個且只有一個字符 和通配符?含義一樣

\ 讓更有意義的字符脫掉馬甲,還原本意

* 重復前面字符0次或多次

.* 表示所有內容

^.* 組合符 匹配以任意多個字符開頭的內容

.*$ 以任意0個字符或多個字符結尾

[abc] 匹配[]集合內的任意一個字符a或b或c;[abc]可以寫成[a-c]

[^abc] 匹配不包含^后的任意字符a或b或c


擴展正則(GRE) 加-E或egrep:

+ 匹配前一個字符一次或多次

[:/]+ ?匹配括號內:或/字符1次或1次以上

?匹配一個字符0次或1次

| 或者同時過濾多個字符串

a{n,m} 匹配前a字符最少n次,最多m次

a{n,} 匹配前a字符最少n次

a{n} 匹配前a字符正好n次

a{,m} 匹配前a字符最多m次

()分組過濾被括起來的東西表示一個整體

\n引用前面()小括號里的內容,例如:(aa)、1,匹配aaaa


特殊符號中括號

[:alnum:] 匹配任意一個字母或數字字符,相當于[a-zA-Z0-9] ??[[:alnum:]]

元字符:

\b ?只匹配單詞??相當于grep -w ?過濾單詞

-d 匹配單個數字字符(需用grep -p)

sed:流編輯器(三劍客之老二)

老大awk老二 sed ??老三grep

Sed是操作、過濾、和轉換文本內容的強大工具



命令格式:

sed?[選項]??[sed內置命令字符]??[輸入文件]


選項:

-n ???取消默認sed輸出,常與sed

-i ???直接修改文件的內容,而不是輸出到終端


內置命令字符說明

s 替換

g 全局global

p 打印 peint

d刪除 delete


問題1:輸出oldboy.txt的第2-3行內容※。打印行

[root@liutengda58~/test]# sed -n '2,3p' oldgirl.txt

I like badminton ball ,billiard ball and chinese chess!

our site is http://www.oldboyedu.com


問題二過濾出含有oldboy字符串的行 ?

用grep過濾:

[root@liutengda58 ~/test]# grep oldboy oldgirl.txt

I am oldboy teacher!

our site is http://www.oldboyedu.com

用sed過濾:

[root@liutengda58~/test]# sed?-n ?'/oldboy/p'??oldgirl.txt

I am oldboy teacher!

our site is http://www.oldboyedu.com


問題三:刪除oldboy字符串的行

[root@liutengda58~/test]# sed ?‘/oldboy/d’ ?oldgirl.txt

I am oldboy teacher!

our site is http://www.oldboyedu.com


問題四:講oldboy字符串全部替換為oldgril

Vim替換:

:%s/oldboy/oldgirl/g

Sed:

Sed‘s#想替換啥#用啥換#g' 文件名

[root@liutengda58~/test]#?sed 's#oldboy#oldgirl#g' oldgirl.txt

I am oldgirl teacher

I like badminton ball ,billiard ball and chinese chess!

our site is http://www.oldgirledu.com

my qq num is 49000448.


問題五:將文件中的oldboy字符串全部替換為oldgirl 同時將123515替換成123144

連續替換

Sed ?-e ?‘s#oldboy#oldgirl#g’??-e ?‘s#123515#123144#g’??oldboy.txt

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。