[英]In-place edits using sed on OS X
我在堆栈溢出中看到了多个帖子,提供了针对此问题的各种解决方案。 我尝试了各种版本的已发布解决方案,但无法正常工作。
我正在写一个Perl脚本,我想
my $fileName = "apple"; my $newName = "banana"; my $ tmpPath = "/etc/ria"; ["/usr/bin/sed","-i ''", "s/${fileName}/${newName}/g", $tmpPath]
我已经尝试过各种不同的组合(即
["/usr/bin/sed","-i''", "s/${fileName}/${newName}/g", $tmpPath]
["/usr/bin/sed","-i", '\\'\\', "s/${fileName}/${newName}/g", $tmpPath]
["/usr/bin/sed","-i", '\\'\\', '-e', "s/${fileName}/${newName}/g", $tmpPath]
但是每次我运行它时,都会创建ria&ria''。 我不要第二个文件ria''。
这不能实现吗? 还是我可以使用其他一些编辑器? 我不想在Mac上安装任何东西(即gsed)。
我正在将其作为system(@command);
运行system(@command);
。
sed -i '' ...
作用是传递“ -i”作为参数,然后是零长度参数(空引号)。 单引号不是参数的一部分,它们只是用来表示存在一个参数(它根本没有任何内容)。 要在perl和system
执行相同的操作,请使用:
["/usr/bin/sed", "-i", "", "s/${fileName}/${newName}/g", $tmpPath]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.