为了账号安全,请及时绑定邮箱和手机立即绑定

在mac(Bsd)和linux上工作的sed就地标记。

在mac(Bsd)和linux上工作的sed就地标记。

慕桂英546537 2019-07-04 15:20:16
在mac(Bsd)和linux上工作的sed就地标记。是否有调用sed没有备份的TODO就地编辑工作在linux和mac上?而BSDsed随OSX发货似乎需要sed -i '' …,GNUsedLinux发行版通常会将引号解释为空输入文件名(而不是备份扩展名),并且需要sed -i …相反。是否有适用于这两种类型的命令行语法,所以我可以在两个系统上使用相同的脚本?
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

如果你真的想用sed -i使用“轻松”的方式,下面的方法在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档案。


查看完整回答
反对 回复 2019-07-04
?
MYYA

TA贡献1868条经验 获得超4个赞

在OSX上,我总是通过Homebrelet安装GNUsed版本,以避免脚本中的问题,因为大多数脚本都是为GNUsed版本编写的。

brew install gnu-sed --with-default-names

然后,您的BSDsed将被GNUsed所取代。

或者,您可以在没有默认名称的情况下安装,但随后:

  • 安装gnu-sed后按指示更改路径。
  • 根据系统的不同,签入要在gsed或sed之间选择的脚本。


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 456 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信