Add a new line after, w/txtfile thats comma delimited

How do you add a new line after you have split a text file with
continuous values delimited with commas? Thanks in advance. MC

For example:
textfile contains: value1,value2,value3…

I want to output this file like this:
value1
value2
value3

#Here is my code:

File.open(‘temp.txt’, ‘r’) do |temp|
arraym = [] #<–I am using array so that I can use array functions
…but I dont have to use array for this
temp.each_line do |line|
arraym= line.split(",",0)
b.puts “”
b.puts arraym # + “\n”
b.puts “”
end
end

You should just be able to split each line on ‘,’ which will give you an
array of values in the line. Then you can just puts the array. Here’s a
little IRB session with some ideas.

line = “value1,value2,value3”
=> “value1,value2,value3”

values = line.split(’,’)
=> [“value1”, “value2”, “value3”]

values.each { |value| puts value }
value1
value2
value3
=> [“value1”, “value2”, “value3”]

puts values
value1
value2
value3
=> nil

Regards,
Craig

I tried that, it didn’t work that way. I am not sure what is hidden in
the file that makes the values not separate. I’ll keep digging. Thanks

I’m new to Ruby but I just read a book that had an example that is
similar to this. I’ve changed the code to see if I can solve this
problem and it seems to do it.

#code:

lines = File.readlines(“temp.txt”)
values = lines.split(/,/)

output_file = File.open(‘output.txt’, ‘w’)
values.each do |line|
output_file.puts line
end

result should be:
value1
value2
value3
value4

On 05.03.2009 16:07, Mmcolli00 Mom wrote:

#Here is my code:

File.open(‘temp.txt’, ‘r’) do |temp|
arraym = [] #<–I am using array so that I can use array functions
.but I dont have to use array for this

This creation of the empty Array is completely superfluous as you do
nothing with this Array. You even do not need to declare the variable
outside of the block since you use it inside only and do not retain
values between iterations (lines).

  temp.each_line do |line|
     arraym=  line.split(",",0)
     b.puts ""
     b.puts arraym # + "\n"
     b.puts ""
  end

end

It can be as simple as

File.foreach “temp.txt” do |line|
puts “”, line.split(/,/), “”
end

You can as well do

File.foreach “temp.txt” do |line|
printf “\n%s\n”, line.gsub(/,/, “\n”)
end

Kind regards

robert

Do you know how to attach a string on the end of each value before
splitting into a new line? For instance…

value1 comments
value2 comments
value3 comments

I tried this using Robert’s code, however, it put the comments on a
newline.

File.foreach “temp.txt” do |line|
puts “”, line.split(/,/),“comments” + @usercomments
end

Thanks everyone for your help.

MC

On Thu, Mar 5, 2009 at 4:58 PM, terminate [email protected] wrote:

values.each do |line|
output_file.puts line
end

Just a comment here. It’s usually better to use the block form of open,
since that will take care of closing the file, even when an error
happens:

File.open(‘output.txt’,‘w’) do |output_file|
#…
end

Jesus.

On Fri, 2009-03-06 at 00:43 +0900, Robert K. wrote:

value3
values between iterations (lines).

Kind regards

robert

rthompso@raker /tmp $ echo “value1,value2,value3” >/tmp/file.txt
rthompso@raker /tmp $ echo “value1,value2,value3” >/tmp/file2.txt
rthompso@raker /tmp $ echo “value1,value2,value3” >/tmp/file1.txt
rthompso@raker /tmp $ cat filetxt
value1,value2,value3
value1,value2,value3
value1,value2,value3
rthompso@raker /tmp $ ruby -p -i -e ‘gsub(/,/, “\n”)’ file
.txt
rthompso@raker /tmp $ cat file*txt
value1
value2
value3
value1
value2
value3
value1
value2
value3

Do you know how to add a comment before each line splits values?

value1 comments
value2 comments
value3 comments

I tried this using Robert’s code, however, it put the comments on a
newline.

File.foreach “temp.txt” do |line|
puts “”, line.split(/,/),“comments” + @usercomments
end

On Mar 5, 11:10 am, Jesús Gabriel y Galán [email protected]
wrote:

output_file = File.open(‘output.txt’, ‘w’)

Jesus.

Thanks for the clarification Jesus!

Reid is that for rake only?

Robert I used the variant gsub and it only puts a comment behind one
value and not all of them. Thanks for helping.
MC

File.foreach “temp.txt” do |line|
newLine = “\n%s\n”, line.gsub(/,/, “comment” + usercomment+ “\n”)
puts newLine
end

On 05.03.2009 17:06, Mmcolli00 Mom wrote:

File.foreach “temp.txt” do |line|
puts “”, line.split(/,/),“comments” + @usercomments
end

You’d rather choose the variant with gsub for this.

robert

Mmcolli00 Mom wrote:

Reid is that for rake only?
I don’t understand your question.

$ ruby -pe ‘gsub(/,/, “\n”)’ file*.txt

The above can be executed from the command line, from a shell script,
from a
backtic command, or a system command, etc… Is that what you are
asking?

btw see

analogous to

google search for
sed one liners
perl one liners
python one liners
lang of choice one liners

Okay this is stupid

Can I know which programming is this