从文件中删除空行而不创建新文件

Delete blank lines from a file without creating a new file

如何在不创建新文件的情况下从 Ruby 中的文件中删除空行?

我看过一些例子,其中逐行读取文件,并且只有非空行被写入新文件。有没有这种方法的替代方法。

有没有类似sed one-liner的东西?

尽管是一个 hack:"Opening file removing blanks and writing back to itself",但有效:

file_name = './blanked.txt'

original = File.open(file_name, 'r') { |file| file.readlines }
blankless = original.reject{ |line| line.match(/^$/) }

File.open(file_name, 'w') do |file|
  blankless.each { |line| file.puts line }
end