如何在ruby中对文件进行排序

时间:2010-07-28 22:12:43

标签: ruby file sorting

这是我的文件内容。

Receivables=Por cobrar
Payables=Cuentos por pagar 
ytdPurchases.label=Purchases YTD
validationError.maxValue=Value is too large, maximum value allowed is {0}

我想按字母顺序对这些内容进行排序...... 我怎么能这样做?

更新: 此代码将对我的文件进行排序。

new_array = File.readlines("#{$base_properties}").sort
File.open("#{$base_properties}","w") do |file|
  new_array.each {|n| file.puts(n)}
end

有没有更好的方法来排序文件?

3 个答案:

答案 0 :(得分:15)

假设您的文件名为“abc”

`sort abc -o abc`

Ruby不应该被用作金锤。通过使用命令sort,它会更快。

答案 1 :(得分:6)

明显的简化:

new_array = File.readlines("#{$base_properties}").sort
File.open("#{$base_properties}","w") do |file|
  file.puts new_array
end

我只是定义一个这样的方法,与File.read相反。它是高度可重用的,并且应该成为标准的一部分:

def File.write!(path, contents)
  File.open(path, "w"){|fh| fh.write contents}
end

然后排序变为:

File.write!($base_properties, File.readlines($base_properties).sort.join)

答案 2 :(得分:0)

File.open("out.txt", "w") do |file|
  File.readlines("in.txt").sort.each do |line|
    file.write(line.chomp<<"\n")
  end
end