我有一个名为matteo_test.sh
的文件,其中包含字符串/nettools/python_64
。
我想用/nettools/python_release/python278/
替换此字符串。
我执行以下操作:
original_str='/nettools/python_64'
replace_str='/nettools/python_release/python278/'
sed "s~$original_str~$replace_str~" matteo_test.sh
执行该操作时,命令行会输出文件matteo_test.sh
的全部内容。在这个输出的内容下,我可以看到字符串已被正确替换。
但是,文件本身的内容尚未修改,因为如果我重新打开它,我仍然会看到里面的旧字符串。
我执行的sed
命令似乎正在替换为包含文件整个内容的字符串,而不是替换为文件本身。
我不是Unix Shell的专家,所以我可能错过了一个非常简单的观点:谁能帮我理解我做错了什么?
我的目的是将该字符串替换为文件。
答案 0 :(得分:0)
尝试sed -i
将内容保存到文件中,而不是在终端中打印输出
参考man sed
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
备份
如果您想使用sed -i.bak
对现有文件进行备份。
示例:强>
sed -i.bak 's/search/patter/' file_name.txt
file_name.txt
内容将随更新内容一起更改,但您仍有file_name.txt.bak
注意:
在发布任何搜索之前,请搜索与该问题相关的google
并阅读man
页面,以便节省您的时间。