sed使用正則表達(dá)式進(jìn)行替換例子以及注意事項(xiàng)
sed中使用正則表達(dá)式進(jìn)行替換的時(shí)候,一定要注意,有些特殊字符在使用時(shí)要轉(zhuǎn)義,目前發(fā)現(xiàn)的有:
- 用于分組的小括號(hào):(),在使用時(shí)要用\進(jìn)行轉(zhuǎn)義,但是匹配字符串中真正的小括號(hào)時(shí),無需轉(zhuǎn)義;
- 表示前面的表達(dá)式出現(xiàn)次數(shù)的{},也要轉(zhuǎn)義;
- 表示前面的表達(dá)式出現(xiàn)1次或多次的+,也要轉(zhuǎn)義,在使用時(shí),要用\+
- 表示前面的表達(dá)式至多出現(xiàn)1次?,也要轉(zhuǎn)義,在使用時(shí),要用\?
不需要轉(zhuǎn)義的特殊字符:
- 用于表示字符集的[]
- 表示前面的表達(dá)式出現(xiàn)0次或多次的*
有些特殊字符在sed的正則表達(dá)式中不能用,比如要表示匹配一個(gè)數(shù)字不能用\d,而要用[0-9],例如:
#想要把u8Speed中的8替換為32,方法一失敗,方法二成功: >echo "u8Speed" |sed -e 's/\d/32/g' >u8Spee32 >echo "u8Speed" |sed -e 's/[0-9]/32/g' >u32Speed
但是\b、\w可以用,分別表示單詞邊界,字母數(shù)字下劃線即[a-zA-Z0-9_]
此貼持續(xù)更新,后續(xù)發(fā)現(xiàn)需要轉(zhuǎn)義的或者不需要轉(zhuǎn)義的,會(huì)不斷更新。
sed使用正則表達(dá)式替換的例子:
#例1: >echo "VAR(int, AAAAA) b;" |sed -e 's/\bVAR(\([a-z]\{1,\}\),\( \)*\([A-Z]\+\))/\1/g' >int b; #上面的命令中,{}、+、()都進(jìn)行了轉(zhuǎn)義 #此命令的功能是,將autosar風(fēng)格的變量定義,轉(zhuǎn)換成常見的變量定義,上述命令輸出結(jié)果為: #int b; #例2: 對(duì)于宏進(jìn)行替換: #define GetData(u8, speed, (int)ZERO) u8speed[(int)ZERO] >echo "GetData(u8, speed, (int)ZERO);" |sed -e 's/\bGetData(\?\(\w\+\), *\(\w\+\), *\((\?\w\+)\?\)\(\w\+\))/\1\2[\3\4]/g' >u8speed[(int)ZERO]
附:sed 關(guān)鍵字匹配整行中任意字符進(jìn)行替換(正則表達(dá)式整行替換)
語法:
sed -i 's/.*要查找的字串符.*/要替換的字串符/' a.txt
實(shí)戰(zhàn)示例:
場(chǎng)景:
查找文本文件 [a.txt] 中包含字串符 [privatekey] 的行將其替換為 123456.
執(zhí)行命令如下:sed -i 's/.*privatekey.*/123456/' a.txt
執(zhí)行替換前:
執(zhí)行替換后:
總結(jié)
到此這篇關(guān)于sed使用正則表達(dá)式進(jìn)行替換例子以及注意事項(xiàng)的文章就介紹到這了,更多相關(guān)sed正則表達(dá)式替換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本實(shí)現(xiàn)刪除一年前文件功能分享
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)刪除一年前文件功能分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-12-12獲取服務(wù)器信息的Shell腳本分享(ubuntu、centos測(cè)試通過)
這篇文章主要介紹了獲取服務(wù)器信息的Shell腳本分享(ubuntu、centos測(cè)試通過),本文直接給出實(shí)現(xiàn)代碼,本文腳本實(shí)現(xiàn)獲取linux發(fā)行版名稱、查看系統(tǒng)是否為64位、系統(tǒng)內(nèi)核版本等信息,需要的朋友可以參考下2014-12-12Linux中查看服務(wù)器內(nèi)存/CPU/網(wǎng)絡(luò)占用情況的命令
這篇文章主要為大家整理了一些Linux中查看服務(wù)器內(nèi)存、CPU和網(wǎng)絡(luò)占用情況的命令,文中的示例代碼簡(jiǎn)潔易懂,需要的小伙伴可以參考一下2023-08-08Shell調(diào)用curl實(shí)現(xiàn)IP歸屬地查詢的腳本
這篇文章主要介紹了Shell調(diào)用curl實(shí)現(xiàn)IP歸屬地查詢,文中給大家提到了查詢IP歸屬地的shell腳本,在批量查找數(shù)據(jù)的時(shí)候經(jīng)常會(huì)遇到,今天給大家分享出來,需要的朋友可以參考下2021-07-07Shell中調(diào)用、引用、包含另一個(gè)腳本文件的三種方法
這篇文章主要介紹了Shell中調(diào)用、引用、包含另一個(gè)腳本文件的三種方法,需要的朋友可以參考下2014-04-04Shell判斷字符串變量是否為空的方法實(shí)現(xiàn)
本文主要介紹了Shell判斷字符串變量是否為空的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06