linux sed命令替換特定字符之后的字符

2023-05-17 15:56

2個(gè)回答

1、首先進(jìn)入到Linux系統(tǒng),分別創(chuàng)建兩個(gè)目錄vim1、vim2。

2、分別在vim1、vim2文件夾下創(chuàng)建兩個(gè)測(cè)試文件file1.c、file2.c。

3、然后在file1.c中添加,如下內(nèi)容。

4、在file2.c中添加如下內(nèi)容,接下來(lái)將要批量將這兩個(gè)文件中的len替換為size。

5、然后執(zhí)行如下sed -i "s/len/size/g" `grep len -rl ./`。

6、執(zhí)行上述命令后,分別再次打開(kāi)上面新建立的兩個(gè)文件,可以看到len已經(jīng)被批量替換為了size。

最近寫了幾個(gè)小腳本用到了sed命令,學(xué)了一下,順便記下


sed替換的基本語(yǔ)法為:

復(fù)制代碼

代碼如下:

sed 's/原字符串/替換字符串/'


單引號(hào)里面,s表示替換,三根斜線中間是替換的樣式,特殊字符需要使用反斜線”\”進(jìn)行轉(zhuǎn)義,但是單引號(hào)”‘”是沒(méi)有辦法用反斜線”\”轉(zhuǎn)義的,這時(shí)候只要把命令中的單引號(hào)改為雙引號(hào)就行了,例如:

復(fù)制代碼

代碼如下:

sed "s/原字符串包含'/替換字符串包含'/" //要處理的字符包含單引號(hào)


命令中的三根斜線分隔符可以換成別的符號(hào),這在要替換的內(nèi)容有較多斜線是較為方便,只需要緊跟s定義即可,例如換成問(wèn)號(hào)”?”:

復(fù)制代碼

代碼如下:

sed 's?原字符串?替換字符串?' //自定義分隔符為問(wèn)號(hào)


可以在末尾加g替換每一個(gè)匹配的關(guān)鍵字,否則只替換每行的第一個(gè),例如:

復(fù)制代碼

代碼如下:

sed 's/原字符串/替換字符串/' //替換所有匹配關(guān)鍵字


上箭頭”^”表示行首,美元”$”符號(hào)如果在引號(hào)中表示行尾,但是在引號(hào)外卻表示末行(最后一行),這里犯二了,搜了半天哪個(gè)符號(hào)表示首行,半天才想起來(lái),首行就是數(shù)字”1″啊.那么在行首和行尾添加字符串就是把行尾和行首替換,例如:

復(fù)制代碼

代碼如下:

sed 's/^/添加的頭部&/g' //在所有行首添加
sed 's/$/&添加的尾部/g' //在所有行末添加
sed '2s/原字符串/替換字符串/g' //替換第2行
sed '$s/原字符串/替換字符串/g' //替換最后一行
sed '2,5s/原字符串/替換字符串/g' //替換2到5行
sed '2,$s/原字符串/替換字符串/g' //替換2到最后一行


替換樣式可以多個(gè)在同一條命令中執(zhí)行,用分號(hào)”;”分隔,例如:

復(fù)制代碼

代碼如下:

sed 's/^/添加的頭部&/g;s/$/&添加的尾部/g' //同時(shí)執(zhí)行兩個(gè)替換規(guī)則


sed處理過(guò)的輸出是直接輸出到屏幕上的,要保存可以將輸出重定向,或者使用參數(shù)”i”直接在文件中替換:

復(fù)制代碼

代碼如下:

sed -i 's/原字符串/替換字符串/g' filename //替換文件中的所有匹配項(xiàng)

相關(guān)問(wèn)答
linux使用sed命令如何替換兩個(gè)字符串之間的字符串
1個(gè)回答2022-11-03 07:42
把url=".*" 變成 url=".*?"
如何使用Linux sed命令進(jìn)行字符串替換
1個(gè)回答2022-11-09 11:21
sed -i 's/ori/replace/' 文件名 -i 原文件內(nèi)容替換; ori為要替換的字符串 replace為要替換成的字符串
在LINUX中 如何用sed將整行替換成給定字符串?
1個(gè)回答2022-11-07 00:55
sed -e 's/^.*$/string/' filename 其中string是你要替換的字符串 以上命令是把所有行都替換成某個(gè)字符串,如果你要只替換某一行,可以在前面加上行號(hào): sed -e...
全文
sed命令替換指定字符串后面內(nèi)容
1個(gè)回答2023-05-17 00:35
sed -r 's/(ATTR\{address\}==")[^"]*/\1ABC/' A 結(jié)果得到: SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",...
全文
Linux:如何使用sed替換其中的內(nèi)容呢?
2個(gè)回答2023-05-17 00:35
sed??-i?'0,/\/plat\/backup\/background/?s/^\*\/5/\*\/8/'?/etc/crontab 僅處理第一個(gè)以“*/5”開(kāi)始的行
sed替換指定字符后面內(nèi)容
1個(gè)回答2022-11-05 20:33
sed?-r?'s/(ATTR\{address\}==")[^"]*/\1ABC/'?A 結(jié)果得到: SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*"...
全文
Linux批量替換多個(gè)文件中字符串
1個(gè)回答2022-12-31 08:31
linux批量替換多個(gè)文件中字符串linux下批量替換多個(gè)文件中的字符串的簡(jiǎn)單方法。用sed命令可以批量替換多個(gè)文件中的字符串。 用sed命令可以批量替換多個(gè)文件中的字符串。sed -i s/原字符串...
全文
linux系統(tǒng)批量替換文件中的字符
1個(gè)回答2022-11-18 03:58
沒(méi)問(wèn)題, 這個(gè)可以幫忙編寫一個(gè)sed 的shell程序來(lái)搞定的哦 能否看看wo 的網(wǎng)名啊 ?幫忙搞定一下 啊
風(fēng)水有寫字當(dāng)符令的說(shuō)法,符令是什么?
2個(gè)回答2023-03-26 20:36
符符碌碌,寫的時(shí)候不要想寫的內(nèi)容,畫的時(shí)候不要看畫的內(nèi)容,
熱門問(wèn)答