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

我想使用sed在OS X上编辑文件。我使用以下命令:

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
您可以通过向-i标志添加用于添加到备份文件的后缀来正确使用-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的这个调用是脚本的一部分,Unix Way TM(IMHO)将非破坏性地使用sed,测试它干净地退出,然后删除无关文件。

http://stackoverflow.com/questions/7573368/in-place-edits-with-sed-on-os-x

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:osx – 在OS X上使用sed进行就地编辑