在没有备份文件的情况下使用sed-imacosx

在没有备份文件的情况下使用sed-imacosx,macos,sed,Macos,Sed,我发现这个帖子: 它提供了在MacOSX上使用sed-i的解决方案,这样它就不会在搜索和替换命令上创建备份文件 例如:。, 请注意用于指定零长度扩展名的singlequote空格singlequote after-i选项: sed -i ' ' 's/foo/|bar/g' test.html 我的问题-这确实为我创建了一个备份文件,它使备份文件与我的输入文件“test.html”同名 我需要在许多文件上运行搜索/替换,我不需要备份文件 这是我的实际命令: sed -i ' ' "s|res

我发现这个帖子:

它提供了在MacOSX上使用sed-i的解决方案,这样它就不会在搜索和替换命令上创建备份文件

例如:。, 请注意用于指定零长度扩展名的singlequote空格singlequote after-i选项:

sed -i ' ' 's/foo/|bar/g' test.html
我的问题-这确实为我创建了一个备份文件,它使备份文件与我的输入文件“test.html”同名

我需要在许多文件上运行搜索/替换,我不需要备份文件

这是我的实际命令:

sed -i ' ' "s|research/projects/vertebrategenome/havana/|science/groups/vertebrate-annotation|g" test2.html

我在mac上得到了一个名为“test2.html”的备份文件,您得到了sed的BSD版本。它需要包含一个空字符串作为-i的参数。注意,在linux上,它很乐意接受没有扩展名的-i

在Linux上:

sed -i 's|StringToReplace|ReplacedString|'
在MacOSX/*BSD上

sed -i '' 's|StringToReplace|ReplacedString|'

请注意,您需要的是空字符串(“”),而不是空字符串(“”)。

我发现在Linux和Mac上使用相同脚本的最佳方法是:

sed -i.bak -e 's/foo/bar/' -- ${TARGET}
rm ${TARGET}.bak

如果两个
字符之间有一个空格字符
,请删除该空格,然后只使用
-i'
。另外,您如何知道您有一个备份文件,请编辑Q以包含
ls-ls firstfileinder*
的输出。祝你好运。@cath,如果对你有用的话,介意把答案标记为接受答案吗?Thanks@atifm-谢谢!我点击了绿色复选框,我想这是正确的。