2010-07-28 35 views
5

Đây là nội dung tệp của tôi.cách sắp xếp tệp trong ruby ​​

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

tôi muốn sắp xếp nội dung này theo thứ tự chữ cái ... Tôi có thể làm như thế nào ??

Cập nhật: Mã này sẽ sắp xếp tệp của tôi.

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

Có cách nào tốt hơn để sắp xếp tệp không?

+0

Giải thích những gì bạn có ý nghĩa bởi _better_ – ezpz

Trả lời

6

hiển nhiên đơn giản hóa:

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

tôi chỉ muốn xác định một phương pháp như thế này, làm trái ngược với File.read. Đó là đánh giá cao thể tái sử dụng, và thực sự phải là một phần của tiêu chuẩn:

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

Và sau đó sắp xếp trở thành:

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

tôi có thể loại tập tin mà không sử dụng hai tập tin? –

+0

chắc chắn: 'a = File.readlines (" in.txt "). Sort' tạo mảng' a' chứa các dòng được sắp xếp. sau đó bạn có thể làm bất cứ điều gì bạn muốn với kết quả. – AShelly

14

Giả sử tập tin của bạn được gọi là "abc"

`sort abc -o abc` 

của Ruby không nên được sử dụng như một cái búa vàng. Bằng cách sử dụng lệnh sort nó sẽ nhanh hơn nhiều.

+0

'strace' cho thấy rằng nó hoạt động, nhưng nó thực sự đảm bảo rằng' abc' sẽ không được ghi đè quá sớm như nó sẽ được với 'loại abc'? – taw

+0

@taw: Nếu tôi thiết kế nó, tôi sẽ sắp xếp tệp và sau đó xuất tệp đó vào tệp, vì vậy không có ghi đè ngoài ý muốn nào xảy ra. Tôi nghĩ những người thiết kế các lệnh này thông minh hơn tôi và đã nghĩ về điều này rồi. –

+0

Niềm tin của bạn về sự tỉnh táo của các lệnh Unix rất ngây thơ. Tôi đã nhìn thấy đủ để tin tưởng tất cả chúng theo bản năng ;-) – taw

Các vấn đề liên quan