Linux中sed命令功能強(qiáng)大,本文將詳細(xì)介紹如何使用sed命令進(jìn)行字符串替換。
一、基本的替換
命令格式1:sed 's/原字符串/新字符串/' 文件
命令格式2:sed 's/原字符串/新字符串/g' 文件
這兩種命令格式的區(qū)別在于是否有個(gè)“g”。沒(méi)有“g”表示只替換第一個(gè)匹配到的字符串,有“g”表示替換所有能匹配到的字符串,“g”可以認(rèn)為是“global”(全局的)的縮寫(xiě),沒(méi)有“全局的”結(jié)尾就不要替換全部,這樣就好記啦。命令可以使用正則表達(dá)式來(lái)處理。如下圖,第一個(gè)命令只是將第一個(gè)“b”替換成了“B”,其他的都沒(méi)有替換;而第二個(gè)命令將全文中的數(shù)字都替換成了“好的”。
只替換第一個(gè)匹配項(xiàng)
替換所有匹配項(xiàng)
二、替換某行內(nèi)容
命令格式1:sed '行號(hào)c 新字符串' 文件
命令格式2:sed '起始行號(hào),終止行號(hào)c 新字符串' 文件
第一個(gè)命令表示用新的字符串替換指定這一行的內(nèi)容linux命令, 第二個(gè)命令表示用新字符串替換指定幾行的內(nèi)容。如下圖,第一個(gè)命令將第2行內(nèi)容替換成了“new test!”linux命令,第二個(gè)命令將第2到6行替換成了“new test!”。
替換指定行內(nèi)容
替換指定幾行內(nèi)容
三、多條件替換
命令格式:sed -e 命令1 -e 命令2 -e 命令3
有些時(shí)候有多個(gè)替換條件,那就可以使用“-e”參數(shù)將這些替換條件連接起來(lái),一次性完成所有的替換操作。例如,可以將上述的兩種命令連接起來(lái):“sed -e 's/原字符串/新字符串/' '行號(hào)c 新字符串' 文件”。如下圖,不僅將小寫(xiě)“a”替換成了大寫(xiě)“A",還將第2行內(nèi)容替換成了“new test!”。
多條件替換
四、保存替換結(jié)果到文件中
命令格式:sed -i 命令
上述這些命令都只是將替換結(jié)果打印到屏幕上,如果想保存結(jié)果到文件中,就需要加上“-i”參數(shù)。
保存替換結(jié)果到文件中
注意,在輸入Linux命令前,一定要將輸入法切換成英文半角符號(hào)狀態(tài)。從Windows電腦上復(fù)制命令到Linux Terminal中執(zhí)行時(shí),也有可能遇到格式不正確造成的命令執(zhí)行錯(cuò)誤,這時(shí)建議手動(dòng)重新輸入字符,如果覺(jué)得輸入麻煩,可以只刪除命令中的空格和最后一個(gè)字符后,重新輸入空格和最后一個(gè)字符。