一尘不染

sed就位标志,可在Mac(BSD)和Linux上使用

linux

是否sed可以在Linux和Mac上调用无需备份的待办事情就地编辑?虽然sed似乎需要OS X附带的BSD sed -i '' …,但是GNU
sedLinux发行版通常随附将引号解释为空的输入文件名(而不是备份扩展名),sed -i …而是需要使用引号。

是否有任何两种语法都适用的命令行语法,所以我可以在两个系统上使用相同的脚本?


阅读 319

收藏
2020-06-02

共1个答案

一尘不染

如果您真的只想使用sed -i“简单”的方法,那么以下DOES可以在GNU和BSD / Mac上运行sed

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文件。

2020-06-02