如何使用 Ruby 的命令行就地编辑模式从文本文件中删除行

问题描述 投票:0回答:1

我一直是 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 inplace-editing
1个回答
1
投票

请参阅 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
© www.soinside.com 2019 - 2024. All rights reserved.