Linux中sed命令功能強大,本文將詳細介紹如何使用sed命令進行字符串替換。
一、基本的替換
命令格式1:sed 's/原字符串/新字符串/' 文件
命令格式2:sed 's/原字符串/新字符串/g' 文件
這兩種命令格式的區別在於是否有個「g」。沒有「g」表示只替換第一個匹配到的字符串,有「g」表示替換所有能匹配到的字符串,「g」可以認為是「global」(全局的)的縮寫,沒有「全局的」結尾就不要替換全部,這樣就好記啦。命令可以使用正則表達式來處理。如下圖,第一個命令只是將第一個「b」替換成了「B」,其他的都沒有替換;而第二個命令將全文中的數字都替換成了「好的」。


二、替換某行內容
命令格式1:sed '行號c 新字符串' 文件
命令格式2:sed '起始行號,終止行號c 新字符串' 文件
第一個命令表示用新的字符串替換指定這一行的內容, 第二個命令表示用新字符串替換指定幾行的內容。如下圖,第一個命令將第2行內容替換成了「new test!」,第二個命令將第2到6行替換成了「new test!」。


三、多條件替換
命令格式:sed -e 命令1 -e 命令2 -e 命令3
有些時候有多個替換條件,那就可以使用「-e」參數將這些替換條件連接起來,一次性完成所有的替換操作。例如,可以將上述的兩種命令連接起來:「sed -e 's/原字符串/新字符串/' '行號c 新字符串' 文件」。如下圖,不僅將小寫「a」替換成了大寫「A",還將第2行內容替換成了「new test!」。

四、保存替換結果到文件中
命令格式:sed -i 命令
上述這些命令都只是將替換結果列印到屏幕上,如果想保存結果到文件中,就需要加上「-i」參數。

注意,在輸入Linux命令前,一定要將輸入法切換成英文半角符號狀態。從Windows電腦上複製命令到Linux Terminal中執行時,也有可能遇到格式不正確造成的命令執行錯誤,這時建議手動重新輸入字符,如果覺得輸入麻煩,可以只刪除命令中的空格和最後一個字符後,重新輸入空格和最後一個字符。