文件中的Ruby空行不会删除

时间:2013-03-25 20:23:46

标签: ruby line gsub

我一定在浏览StackOverflow上的每个解决方案,似乎没有任何东西从文本文件中删除空白行,如下所示:

google
yahoo

facebook

reddit

在其他消息来源中,我尝试过:

File.foreach("file.txt") { |line|
  line.gsub(/^$\n/, '')
}

replace = text.gsub /^$\n/, ''
File.open("file.txt", "w") { |file| file.puts replace }

然而,这些都不起作用。我正在撕扯我的头发,似乎没有原生的Nokogiri方法,正则表达式也不起作用。

5 个答案:

答案 0 :(得分:2)

如何判断它是否为空?

out = File.new("out.txt", "w")

File.foreach("file.txt") { |line|
  out.puts line unless line.chomp.empty?
}

答案 1 :(得分:2)

我使用下面的一个衬垫删除文件中的所有空行

file = "/tmp/hello.log"
File.write(file, File.read(file).gsub(/\n+/,"\n"))

答案 2 :(得分:0)

稍微改变gsub,它会起作用

File.foreach("file.txt"){|line|
  line.gsub("\n", '')
}

答案 3 :(得分:0)

source_file = '/hello.txt'
new_file = File.new('/hello_new.txt')
File::open(new_file,'w') do |file|
  File::open(source_file,'r').each(sep="\n") do |line|
    file << line unless line.gsub("\n",'').length == 0
  end
end

答案 4 :(得分:0)

String#squeeze对此很好。在这里,它将一系列线端减少到一个线端。

open("out.txt", "w") {|out| open("test.txt") {|in| out << in.read.squeeze("\n")}}