我想在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 回答
万千封印
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无损使用,测试它是否干净退出,然后才删除无关的文件。
慕姐8265434
TA贡献1813条经验 获得超2个赞
我对MacOS也有类似的问题
sed -i '' 's/oldword/newword/' file1.txt
不起作用,但是
sed -i"any_symbol" 's/oldword/newword/' file1.txt
效果很好。
添加回答
举报
0/150
提交
取消