sed使用正則表達(dá)式進(jìn)行替換例子以及注意事項(xiàng)
sed中使用正則表達(dá)式進(jìn)行替換的時候,一定要注意,有些特殊字符在使用時要轉(zhuǎn)義,目前發(fā)現(xiàn)的有:
- 用于分組的小括號:(),在使用時要用\進(jìn)行轉(zhuǎn)義,但是匹配字符串中真正的小括號時,無需轉(zhuǎn)義;
- 表示前面的表達(dá)式出現(xiàn)次數(shù)的{},也要轉(zhuǎn)義;
- 表示前面的表達(dá)式出現(xiàn)1次或多次的+,也要轉(zhuǎn)義,在使用時,要用\+
- 表示前面的表達(dá)式至多出現(xiàn)1次?,也要轉(zhuǎn)義,在使用時,要用\?
不需要轉(zhuǎn)義的特殊字符:
- 用于表示字符集的[]
- 表示前面的表達(dá)式出現(xiàn)0次或多次的*
有些特殊字符在sed的正則表達(dá)式中不能用,比如要表示匹配一個數(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)義的,會不斷更新。
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:
對于宏進(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)示例:
場景:
查找文本文件 [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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux命令學(xué)習(xí)之用戶切換su,sudo命令詳解
在操作過程中需要使用特定的用戶進(jìn)行特定的操作,多數(shù)情況下是因?yàn)闄?quán)限,比如要修改一個文件,只有root用戶有權(quán)限修改,那么就要切換到root用戶下進(jìn)行操作,本文給大家講解Linux命令學(xué)習(xí)之用戶切換su,sudo命令,感興趣的朋友跟隨小編一起看看吧2023-02-02
Bash 腳本實(shí)現(xiàn)每次登錄到 Shell 時可以查看 Linux 系統(tǒng)信息
這篇文章主要介紹了Bash 腳本實(shí)現(xiàn)每次登錄到 Shell 時可以查看 Linux 系統(tǒng)信息,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧2019-12-12
Linux 下sudo網(wǎng)絡(luò)權(quán)限詳解
這篇文章主要介紹了Linux 下sudo網(wǎng)絡(luò)權(quán)限詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05
Linux下date命令,格式化輸出,時間設(shè)置方法
下面小編就為大家?guī)硪黄狶inux下date命令,格式化輸出,時間設(shè)置方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
統(tǒng)計(jì) cpu 內(nèi)存 使用率的shell腳本代碼
統(tǒng)計(jì) cpu 內(nèi)存使用率的腳本,有需要的朋友可以參考下2013-02-02

