使用sed -ie命令修改文件时为何生成带e后缀的额外文件?
解决sed命令生成带e后缀备份文件的问题
问题出在你写的sed -ie这个参数组合上:
- sed的
-i选项是原地编辑文件,它后面可以跟一个可选的备份后缀名(比如-i.bak会生成带.bak的备份文件)。 - 当你把
-i和-e连写成-ie时,sed会错误地把e当成-i的备份后缀参数,而不是把e识别为-e(指定表达式的参数)。这就导致它在完成替换后,自动生成了一个原文件名加e的备份文件。
正确的写法有两种:
不需要备份文件:把
-i和-e分开写,明确区分两个参数:sed -i -e 's/^{OLD}/{NEW}/' {File}(GNU sed下,单独用
-i不带后缀就不会生成备份;如果是BSD sed,可能需要写成sed -i '' -e 's/^{OLD}/{NEW}/' {File},注意-i后面的空引号)需要备份文件:明确指定备份后缀,比如用
.bak:sed -i.bak -e 's/^{OLD}/{NEW}/' {File}这样会生成带
.bak后缀的备份文件,而不是莫名其妙的e后缀。
本质上就是参数格式的问题,-i和-e不能连写,必须分开来让sed正确识别各自的作用。
内容的提问来源于stack exchange,提问作者Judy
相关产品推荐
相关产品推荐

