3 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
最簡(jiǎn)單的方法是使用sed(或perl):
sed -i -e 's/abc/XYZ/g' /tmp/file.txt
由于該-i
選項(xiàng),將調(diào)用sed進(jìn)行就地編輯。這可以從bash調(diào)用。
如果你真的真的想使用bash,那么以下內(nèi)容可以工作:
while read a ; do echo ${a//abc/XYZ} ; done < /tmp/file.txt > /tmp/file.txt.t ; mv /tmp/file.txt{.t,}
這循環(huán)遍歷每一行,進(jìn)行替換,并寫(xiě)入臨時(shí)文件(不想破壞輸入)。最后的移動(dòng)只是臨時(shí)移動(dòng)到原始名稱(chēng)。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
文件操作通常不是由Bash完成的,而是由Bash調(diào)用的程序完成的,例如:
> perl -pi -e 's/abc/XYZ/g' /tmp/file.txt
該-i
標(biāo)志告訴它進(jìn)行就地替換。
有關(guān)man perlrun
詳細(xì)信息,請(qǐng)參閱參考資料,包括如何備份原始文件。
添加回答
舉報(bào)