是否sed可以在Linux和Mac上调用无需备份的待办事情就地编辑?虽然sed似乎需要OS X附带的BSD sed -i '' …,但是GNU sedLinux发行版通常随附将引号解释为空的输入文件名(而不是备份扩展名),sed -i …而是需要使用引号。
sed
sed -i '' …
sed -i …
是否有任何两种语法都适用的命令行语法,所以我可以在两个系统上使用相同的脚本?
如果您真的只想使用sed -i“简单”的方法,那么以下DOES可以在GNU和BSD / Mac上运行sed:
sed -i
sed -i.bak 's/foo/bar/' filename
注意缺少空间和点。
证明:
# GNU sed % sed --version | head -1 GNU sed version 4.2.1 % echo 'foo' > file % sed -i.bak 's/foo/bar/' ./file % ls file file.bak % cat ./file bar # BSD sed % sed --version 2>&1 | head -1 sed: illegal option -- - % echo 'foo' > file % sed -i.bak 's/foo/bar/' ./file % ls file file.bak % cat ./file bar
显然,您可以删除这些.bak文件。
.bak