On Oct 2, 2012, at 12:00 AM, Nila wrote:
> Hi,
>
> Is there a way to edit each line in a file, without involving 2 files? Say, the original file has,
>
> test01
> test02
> test03
>
> I want to edit it like
> test01,a
> test02,a
> test03,a
>
> Tried something like this, but it replaces some of the characters.
> File.open('mytest.csv', 'r+') do |file|
> file.each_line do |line|
> file.seek(-line.length, IO::SEEK_CUR)
> file.puts 'a'
> end
> end
>
> Writing it to a temporary file and then replace the original file works, However, I need to edit the file quite often and therefore prefer to do it within the file itself .Any pointers are appreciated.
You can stash the data in an array, manipulate it there, and then write it back to the file store after. Ignore the HEREDOC parts of this, and substitute your file read/write bits, and this should work:
foo = <<EOF
one
two
three
EOF
bar = []
foo.each_line do |line|
bar.push (line.strip + ',a')
end
foo = bar.join("\n")
puts foo
Walter
>
> Thank you!
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/aGb5C9X9JZUJ.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment