从文件中的每一行删除尾随空格

时间:2015-05-06 17:33:37

标签: ruby-on-rails ruby file-handling

我正在使用ruby,我想删除文件中每行末尾的尾随空格。

一种方法, 逐行迭代并将其保存在另一个文件中,然后用旧文件替换新文件。

  temp_file = Tempfile.new("temp")
  f.each_line do |line|
    new_line = line.rstrip
    temp_file.puts  new_line
  end

但这不是我想要的。 我想使用我们通常在C,C ++中使用的方法,而不使用任何临时文件,将文件指针移动到新行的前面并覆盖它。

我们怎样才能在ruby中做到这一点?

2 个答案:

答案 0 :(得分:1)

以下是修改文件内容的一种方法。

# a.rb
File.open "#{__dir__}/out1.txt", 'r+' do |io|
  r_pos = w_pos = 0

  while (io.seek(r_pos, IO::SEEK_SET); io.gets)
    r_pos = io.tell
    io.seek(w_pos, IO::SEEK_SET)
    # line read in by IO#gets will be returned and also assigned to $_.
    io.puts $_.rstrip
    w_pos = io.tell
  end

  io.truncate(w_pos)
end

这是文件的输出。

[arup@Ruby]$ cat out1.txt
 foo 
    biz
 bar

[arup@Ruby]$ ruby a.rb
[arup@Ruby]$ cat out1.txt
 foo
    biz
 bar

[arup@Ruby]$

答案 1 :(得分:0)

您可以使用以下内容:

file_name = 'testFile.txt'

input_content = File.open(file_name).read
output_content = []

file.each_line do |line|
  line.gsub!("\n",'').strip!
  output_content << line
end

File.open(file_name,'w').write(output_content.join("\n"))