1 global flag正則表達式
sed 's/xxx/xxx/' inputfile,若是沒有帶global flag g的話,匹配替換的只是inputfile中的每一行的第一個匹配項。若是帶了g的話,纔會所有都替換。input
s命令替換的是行裏面匹配了前面的模式的部分,也就是說,s是部分替換。it
例子:MBA_students.txt
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Managersed
sed 's/a/A/' MBA_students.txtfile
輸出:
102,JAson Smith,IT Manager
103,RAj Reddy,Sysadmin
104,AnAnd Ram,Developer
105,JAne Miller,Sales Managererror
sed 's/a/A/' MBA_students.txt文件
輸出:process
102,JAson Smith,IT MAnAger
103,RAj Reddy,SysAdmin
104,AnAnd RAm,Developer
105,JAne Miller,SAles MAnAgerab
2 使用-i選項編輯以後替換原文件arc
sed -i -e SCRIPT inputfile,這裏必定要用-e,不然會出現unterminated substitute pattern。
3 使用\(..\)進行子串匹配
3.1 用於\n獲取
匹配到的子串能夠用\1,\2,\3來獲取。
3.2 使得裏面的模式爲一個總體
\(abcd\)*,匹配0個或者多個abcd。
也就是說,\(\)裏面的是一個模式就能夠了,而後多個的話,從前到後用\一、\2能夠獲取,其它的沒有影響。
4 多個模式鏈接
多個模式連着寫就是多個模式一塊兒匹配,一塊兒處理。若是不是一塊兒匹配的話,用\|,表示要麼前者匹配,要麼後者匹配,而後分別處理。
例子 \(error processing \)\(package \|archive \),匹配「error processing package 」或者匹配「error processing archive 」。
5 正則表達式匹配的長度是有限的
正則表達式匹配輸入行,匹配結果的長度是有限的,即子串的長度是有限的。它會用replacement來替換這個匹配上的子串。