交互式愛情
2019-08-06 12:59:33
從Bash命令查找和替換文本文件對于給定的輸入字符串進(jìn)行查找和替換的最簡單方法是什么,比方說abc,并替換為另一個(gè)字符串,比如XYZ在文件中/tmp/file.txt?我正在編寫一個(gè)應(yīng)用程序并使用IronPython通過SSH執(zhí)行命令 - 但我不熟悉Unix,也不知道要查找什么。我聽說Bash除了是命令行界面外,還可以是一種非常強(qiáng)大的腳本語言。所以,如果這是真的,我假設(shè)您可以執(zhí)行這些操作。我能用bash做什么,以及實(shí)現(xiàn)目標(biāo)的最簡單(一行)腳本是什么?
3 回答

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
最簡單的方法是使用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)行替換,并寫入臨時(shí)文件(不想破壞輸入)。最后的移動(dòng)只是臨時(shí)移動(dò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ì)信息,請參閱參考資料,包括如何備份原始文件。
添加回答
舉報(bào)
0/150
提交
取消