Я был пользователем Perl долгое время, и в Perl'е вы можете легко удалить строки из текстовых файлов, как это:Как использовать командную строку в Ruby режим на месте-редактирования, чтобы удалить строки из текстового файла
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
но это ничего не делал.
Любые идеи?
Вторая форма работает для меня. Может ли ваше состояние соответствовать каждой строке? 'echo -e" a \ nb \ nc "> x; ruby -pi -e '$ _ = nil, если $ _ = ~/b /' x; cat x' печатает 'a \ nc' для меня. – Amadan
+1 для @Amadan, он тоже работает для меня – mdesantis
Да, возможно, что-то не так с моим регулярным выражением - теперь, когда я тестировал его снова с оригинальным выражением и исходными тестовыми данными, он работал нормально. @Amadan, если вы поместите свой комментарий в качестве ответа, я приму его. – Guss