Bash 在shell脚本中使用sed工具时,如何避免使用“-e”创建额外的文件?

Bash 在shell脚本中使用sed工具时,如何避免使用“-e”创建额外的文件?,bash,macos,shell,sed,Bash,Macos,Shell,Sed,我在shell脚本中使用sed命令在osx(unix)环境中编辑和替换xml文件的某些文件内容。是否有某种方法可以避免使用-e创建临时文件?我在脚本中执行以下操作,以使用sed编辑文件 sed -i -e 's/abc/xyz/g' /PathTo/MyEditableFile.xml 上面的sed命令非常有效,但会创建一个额外的文件,如/PathTo/MyEditableFile.xml-e 如何避免使用-e创建额外文件? 我尝试了一些选项,比如将临时文件夹路径设置为sed,以便它在/tmp

我在shell脚本中使用
sed
命令在osx(unix)环境中编辑和替换xml文件的某些文件内容。是否有某种方法可以避免使用
-e
创建临时文件?我在脚本中执行以下操作,以使用sed编辑文件

sed -i -e 's/abc/xyz/g' /PathTo/MyEditableFile.xml
上面的
sed
命令非常有效,但会创建一个额外的文件,如
/PathTo/MyEditableFile.xml-e

如何避免使用
-e
创建额外文件?

我尝试了一些选项,比如将临时文件夹路径设置为
sed
,以便它在
/tmp/
中创建临时文件。像这样:

sed -i -e 's/abc/xyz/g' /PathTo/MyEditableFile.xml >/tmp

但是似乎不起作用

因为您正在就地编辑文件(
-i
),OSX
sed
需要一个强制备份文件名

您可以使用-
i”“
绕过此问题:

sed -i "" -e 's/abc/xyz/g' /PathTo/MyEditableFile.xml

另见:非常感谢。它起作用了。但是,删除
-e
对我来说不起作用。可能是因为我实际上在执行复杂的sed命令。像这样:
sed-i”“-e's/searchcriteriawith=“[^”]*/searchcriteriawith=“'$new\u value\u frmSome\u var'/g'MyEditableFile.xml
我不希望在我的问题中包含所有这些复杂性。因此,我简化了sample@NelsonP没问题,我也去掉了那部分。