是否有调用 sed
在 Linux 和 Mac 上都可以在没有备份的情况下进行就地编辑?虽然 OS X 附带的 BSD sed
似乎需要 sed -i '' …
,但 GNU sed
Linux 发行版通常将文件名解释为空输入备份扩展),并且需要 sed -i …
代替。
是否有任何命令行语法适用于这两种风格,所以我可以在两个系统上使用相同的脚本?
原文由 dnadlinger 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否有调用 sed
在 Linux 和 Mac 上都可以在没有备份的情况下进行就地编辑?虽然 OS X 附带的 BSD sed
似乎需要 sed -i '' …
,但 GNU sed
Linux 发行版通常将文件名解释为空输入备份扩展),并且需要 sed -i …
代替。
是否有任何命令行语法适用于这两种风格,所以我可以在两个系统上使用相同的脚本?
原文由 dnadlinger 发布,翻译遵循 CC BY-SA 4.0 许可协议
这适用于 GNU sed,但不适用于 OS X:
sed -i -e 's/foo/bar/' target.file
sed -i'' -e 's/foo/bar/' target.file
这适用于 OS X,但不适用于 GNU sed:
sed -i '' -e 's/foo/bar/' target.file
在 OS X 上你
sed -i -e
因为备份文件的扩展名将设置为 -e
sed -i'' -e
出于同样的原因 - 它需要在 -i
和 ''
之间有一个空格。原文由 dnadlinger 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
3 回答3.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
如果您真的只想使用
sed -i
‘简单’的方式,以下在 GNU 和 BSD/Mac 上都可以工作sed
:请注意缺少空间和点。
证明:
显然你可以删除
.bak
文件。