在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


慕婉清6462132
浏览 673回答 4
4回答

慕莱坞4276893

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

万千封印

您可以通过为-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无损使用,测试它是否干净退出,然后才删除无关的文件。

慕姐8265434

我对MacOS也有类似的问题sed -i '' 's/oldword/newword/' file1.txt不起作用,但是sed -i"any_symbol" 's/oldword/newword/' file1.txt效果很好。
打开App,查看更多内容
随时随地看视频慕课网APP