Mat*_*NNZ 5 unix string bash shell sed
我有一个名为 的文件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
Run Code Online (Sandbox Code Playgroud)
当我执行该命令时,命令行会输出文件的全部内容matteo_test.sh。在输出的内容下,我可以看到字符串已被正确替换。
但是,文件本身的内容并未被修改,因为如果我重新打开它,我仍然会看到里面的旧字符串。
看来sed我执行的命令是将替换替换为包含文件全部内容的字符串,而不是替换为文件本身。
我不是 Unix Shell 的专家,所以我可能错过了一个非常简单的点:任何人都可以帮助我理解我做错了什么吗?
我的目的是将该字符串替换到文件中。
尝试 sed -i将内容保存在文件中,而不是在终端中打印输出
参考man sed
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
Run Code Online (Sandbox Code Playgroud)
带备份
如果您想使用现有文件进行备份sed -i.bak。
例子:
sed -i.bak 's/search/patter/' file_name.txt
Run Code Online (Sandbox Code Playgroud)
file_name.txt内容将随着更新的内容而改变,但仍然有旧内容file_name.txt.bak
注意:
在发布任何问题之前,请搜索google与该问题相关的内容并阅读man页面,这样可以节省您的时间。
| 归档时间: |
|
| 查看次数: |
4026 次 |
| 最近记录: |