我一直是 Perl 用户,在 Perl 中你可以轻松地从文本文件中删除行,如下所示:
perl -pi -e 'undef $_ if m/some-condition/' file.txt
我正在尝试将我的脚本转移到 Ruby,它也可以进行就地编辑,所以我写了这个:
ruby -pi -e '$_ = nil if $_ =~ /some-condition/' file.text
但这反而使整个文件无效。然后我就尝试了
ruby -pi -e 'nil if $_ =~ /some-condition/' file.text
但这没有任何作用。
有什么想法吗?
请参阅 Ruby 命令行选项:
ruby -pi -e '$_ = nil if $_ =~ /some-condition/' file.text
应该是正确的。如果不起作用,问题就出在
some-condition
。为了证明,
echo -e "a\nb\nc" > x ; ruby -pi -e '$_ = nil if $_ =~ /b/' x ; cat x
打印
a
c