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

在OS X上使用sed进行就地编辑

在OS X上使用sed进行就地编辑

我想在OS X上使用sed编辑文件。我使用以下命令:sed 's/oldword/newword/' file.txt输出发送到终端。 file.txt未修改。使用以下命令将更改保存到file2.txt:sed 's/oldword/newword/' file1.txt > file2.txt但是我不想要另一个文件。我只想编辑file1.txt。我怎样才能做到这一点?我已经尝试过-i标志。这将导致以下错误:sed: 1: "file1.txt": invalid command code f
查看完整描述

4 回答

?
慕莱坞4276893

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

直接使用vim进行编辑,也能实现同样的效果,可以直接保存在原始文件

查看完整回答
反对 回复 2019-12-14
?
万千封印

TA贡献1891条经验 获得超3个赞

您可以通过为-i标志提供后缀以将其添加到备份文件中来正确使用该标志。扩展您的示例:


sed -i.bu 's/oldword/newword/' file1.txt

将给您两个文件:一个文件名file1.txt包含替换内容,另一个文件名包含file1.txt.bu原始内容。


轻度危险


如果要破坏性地覆盖原始文件,请使用以下方法:


sed -i '' 's/oldword/newword/' file1.txt

      ^ note the space

由于行的解析方式不同,因此选项标记与其参数之间需要有一个空格,因为参数的长度为零。


除了可能破坏您的原件外,我不知道以这种方式欺骗sed的任何其他危险。但是,应注意,如果此调用sed是脚本的一部分,则Unix Way™(IMHO)将被sed无损使用,测试它是否干净退出,然后才删除无关的文件。


查看完整回答
反对 回复 2019-11-08
?
慕姐8265434

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

我对MacOS也有类似的问题


sed -i '' 's/oldword/newword/' file1.txt

不起作用,但是


sed -i"any_symbol" 's/oldword/newword/' file1.txt

效果很好。


查看完整回答
反对 回复 2019-11-08
  • 4 回答
  • 0 关注
  • 672 浏览

添加回答

举报

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