一、創(chuàng)建一個(gè)txt文件,用于做測(cè)試
vi huawei.txt
二、替換每行第一個(gè)huawei為apple,第三個(gè)“/”后,不加參數(shù)就是只替換第一個(gè)
sed -i "s/huawei/apple/" huawei.txt
實(shí)現(xiàn)效果:
三、替換每行所有的xiaomi為iphone,第三個(gè)“/”后,加參數(shù)g就是替換所有
sed -i??"s/xiaomi/iphone/g" huawei.txt
實(shí)現(xiàn)效果:
四、替換每行第二個(gè)redmi為potato,第三個(gè)“/”后,加參數(shù)2就是替換第2個(gè)
sed -i "s/redmi/potato/2"
?
?五、替換每行第二個(gè)mate到最后一個(gè)mate,為pico,第三個(gè)“/”后,加參數(shù)2g就是替換第2至最后
sed -i "s/mate/pico/2g"?
六、替換每行前兩個(gè)KFC為CPU
sed -i "s/KFC/CPU/"
sed -i "s/KFC/CPU/"
先替換第一個(gè),此時(shí)原本的第二個(gè)字符串從順序上來說變成了第一個(gè),就再替換一次
(以上的操作范圍為每一行,接下來我們精確篩選需要修改的特定行or第幾行,方便演示我們就只改變特定行的第一個(gè)字符串。也就是不加“g”)
七、替換第二行的第一個(gè)HBW為MDL
sed -i "2s/HBW/MDL/" HBW.txt?
?八、替換第二行到最后一行的HBW為MDL(符號(hào)$表示最后一行,如果寫數(shù)字就代表到第幾行)
sed -i '2,$s/HBW/MDL/' HBW.txt?
注意當(dāng)語句中使用逗號(hào)","時(shí),語句外就必須使用單引號(hào)
(以上都是針對(duì)特定字符串本身的替換,接下來我們修改行首或行尾).
九、給第一行行首加上chicken(符號(hào)^代表行首)
sed -i '1s/^/chicken/' ktv.txt
?十、給第一行行尾加上beautiful(符號(hào)$代表行尾)
sed -i '1s/$/beautiful/' ktv.txt?
(使用sed -i命令直接修改文件后,后悔了怎么辦?可以加上參數(shù)-i.bak,就會(huì)修改的同時(shí)創(chuàng)建備份)
十一、給每行行首加上chicken,同時(shí)創(chuàng)建備份文件(備份還沒有寫入chicken的文件)
sed -i.bak 's/^/chicken/' aaa.txt?
?十二、多個(gè)替換動(dòng)作,用分號(hào);隔開可以一起執(zhí)行
同時(shí)給所有行首加上top,給所有行尾加上bottom(注意沒有調(diào)用-i參數(shù),修改結(jié)果不會(huì)寫入文件
sed 's/^/top/;s/$/bottom/' aaa.txt
十三、如果需要替換的字符串包含單引號(hào)‘,那么就使用雙引號(hào)來包圍參數(shù)
?替換每行的n’a為na,(注意為了方便沒有使用-i參數(shù),修改結(jié)果不會(huì)寫入文件)
sed "s/n'a/na/" aaa.txt
?十四、斜杠/本身是作為sed語句中的分隔符,但如果需要替換的字符串里也包含斜杠/,那么可以用井號(hào)#來做分隔符(還可以用問號(hào)?)
替換n/a為na,(沒有調(diào)用參數(shù)-i,修改結(jié)果不會(huì)寫入文件)
sed "s#n/a#na#" aaa.txt
sed "s?n/a?na?" aaa.txt
?
十五、在第一行、最后一行、倒數(shù)一行增加內(nèi)容。
(不需要去找某個(gè)關(guān)鍵詞了,有點(diǎn)像“無中生有”,想在不破壞原來內(nèi)容的情況下,添加新內(nèi)容,用這種命令比較好。)
# 在第一行前插入一行,即成為第一行的內(nèi)容
[root@localhost ~]# sed -i '1i first line' test.txt
(沒有加參數(shù)-i,不會(huì)真的改變文本內(nèi)容)
?文章來源:http://www.zghlxwxcb.cn/news/detail-581693.html
# 在最后一行前插入一行,即成為倒數(shù)第二行的內(nèi)容
[root@localhost ~]# sed -i '$i next-to-last line' test.txt
(沒有加參數(shù)-i,不會(huì)真的改變文本內(nèi)容)?
?
# 在最后一行后插入一行,即成為最一行的內(nèi)容
[root@localhost ~]# sed -i '$a last line' test.txt
(沒有加參數(shù)-i,不會(huì)真的改變文本內(nèi)容)
?
感悟:sed的方便在之處在于你可以快速定位編輯文檔內(nèi)容中的某個(gè)關(guān)鍵詞(你已知那個(gè)字符串),但是對(duì)于未知字符串就很難直接用sed解決。如密碼本,我想替換所有密碼,但它們都是隨機(jī)字符串,假如文件內(nèi)容是“password:12345678;password:22345678;……”,那么我能夠定位的只能是“password:”和“;”,如何繼續(xù)去替換非固定的“12345678”還需要研究,歡迎大神留言指教文章來源地址http://www.zghlxwxcb.cn/news/detail-581693.html
到了這里,關(guān)于Linux學(xué)習(xí),使用sed命令對(duì)文件內(nèi)的指定字符串進(jìn)行替換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!