一、建立一個txt檔案,
vi huawei.txt

二、替換每行第一個huawei為apple,第三個“/”後,不加參數就是隻替換第一個
sed -i "s/huawei/apple/" huawei.txt
實作效果:
三、替換每行所有的xiaomi為iphone,第三個“/”後,加參數g就是替換所有
sed -i "s/xiaomi/iphone/g" huawei.txt
實作效果:
四、替換每行第二個redmi為potato,第三個“/”後,加參數2就是替換第2個
sed -i "s/redmi/potato/2"
五、替換每行第二個mate到最後一個mate,為pico,第三個“/”後,加參數2g就是替換第2至最後
sed -i "s/mate/pico/2g"
六、替換每行前兩個KFC為CPU
sed -i "s/KFC/CPU/"
sed -i "s/KFC/CPU/"
先替換第一個,此時原本的第二個字元串從順序上來說變成了第一個,就再替換一次
(以上的操作範圍為每一行,接下來我們精确篩選需要修改的特定行or第幾行,友善示範我們就隻改變特定行的第一個字元串。也就是不加“g”)
七、替換第二行的第一個HBW為MDL
sed -i "2s/HBW/MDL/" HBW.txt
八、替換第二行到最後一行的HBW為MDL(符号$表示最後一行,如果寫數字就代表到第幾行)
sed -i '2,$s/HBW/MDL/' HBW.txt
注意當語句中使用逗号","時,語句外就必須使用單引号
(以上都是針對特定字元串本身的替換,接下來我們修改行首或行尾).
九、給第一行行首加上chicken(符号^代表行首)
sed -i '1s/^/chicken/' ktv.txt
十、給第一行行尾加上beautiful(符号$代表行尾)
sed -i '1s/$/beautiful/' ktv.txt
(使用sed -i指令直接修改檔案後,後悔了怎麼辦?可以加上參數-i.bak,就會修改的同時建立備份)
十一、給每行行首加上chicken,同時建立備份檔案(備份還沒有寫入chicken的檔案)
sed -i.bak 's/^/chicken/' aaa.txt
十二、多個替換動作,用分号;隔開可以一起執行
同時給所有行首加上top,給所有行尾加上bottom(注意沒有調用-i參數,修改結果不會寫入檔案
sed 's/^/top/;s/$/bottom/' aaa.txt
十三、如果需要替換的字元串包含單引号‘,那麼就使用雙引号來包圍參數
替換每行的n’a為na,(注意為了友善沒有使用-i參數,修改結果不會寫入檔案)
sed "s/n'a/na/" aaa.txt
十四、斜杠/本身是作為sed語句中的分隔符,但如果需要替換的字元串裡也包含斜杠/,那麼可以用井号#來做分隔符(還可以用問号?)
替換n/a為na,(沒有調用參數-i,修改結果不會寫入檔案)
sed "s#n/a#na#" aaa.txt
sed "s?n/a?na?" aaa.txt
感悟:sed的友善在之處在于你可以快速定位編輯文檔内容中的某個關鍵詞(你已知那個字元串),但是對于未知字元串就很難直接用sed解決。如密碼本,我想替換所有密碼,但它們都是随機字元串,假如檔案内容是“password:12345678;password:22345678;……”,那麼我能夠定位的隻能是“password:”和“;”,如何繼續去替換非固定的“12345678”還需要研究,歡迎大神指教