我正在尝试让sed
用另一个文件的内容替换文件中的一行。使它起作用,但是就地替换会以某种方式产生带有后缀-e
的额外文件。
这似乎只发生在macOS(High Sierra)上,而没有发生在Linux(Alpine)上,因为我试图在docker容器中重现此问题。
我的命令依次再现:
$ echo 'someline' > target_file.txt
$ echo 'replacementcontent' > replacement.txt
$ sed -Ei -e "\#^someline\$#{
r replacement.txt
d
}" target_file.txt
$ cat target_file.txt
replacementcontent
$ ls
replacement.txt target_file.txt target_file.txt-e
替换操作按预期工作,但是在Linux环境中target_file.txt-e
不会出现。
我知道macOS和Linux sed之间存在差异,但这似乎是随机的,但我可能只是不了解。
为什么会发生这种情况,并且可以以不可知的方式编写命令(以便在macOS和Linux上都可以使用相同的命令)?