Take text from file and add do it with Ruby..?

I have a text file that I want to add some content to, but I’m not sure
how to use the file as input. I have a list of things in the file that
is formatted like

item1 | item2 | item3 | item4 |

and etcetera… How can I take these items and put each of them on a new
line, minus the “|” and add a certain phrase afterward? Like:

item1 [phrase]
item2 [phrase]
item3 [phrase]

Is there a simple way to do this? I’ve taken lists of things like this
before and added text to it, but I put all of the items in an array
manually first… would someone show me a faster way, please?

Try this:

ph_hashes = Hash.new(“no phrase”).merge({
:item1 => “phrase 1”,
:item2 => “phrase 2”,
:item3 => “phrase 3”
})

File.open(“yourfile_o.txt”,“w”) do |file|
file.write
File.open(“yourfile.txt”).readlines.join("\n").gsub(/([^|]+)|/){
“#{(v=$1.strip) + " " + ph_hashes[v.to_sym]}\n”}
end

Hi Zoe,
Ruby program


full= File.open(“orig.txt”)
phrase=[“phrase1”,“phrase2”,“phrase3”]
count=0
full.each do |line|
first=[]
first=line.split(/|/)
first.each do |single|
sub=single.strip!
main = (sub).to_s + (phrase [count]).to_s
puts main
count+=1
end
end

how can I save the output to a file? I see where you’re making it print
the output with “main”, but when I try to save it to a file the way I
have with other programs I’ve made, I get an error… it says the
variable “main” is undefined. Help?

Zoe P. wrote:

I have a text file that I want to add some content to, but I’m not sure
how to use the file as input. I have a list of things in the file that
is formatted like

item1 | item2 | item3 | item4 |

and etcetera… How can I take these items and put each of them on a new
line, minus the “|” and add a certain phrase afterward? Like:

item1 [phrase]
item2 [phrase]
item3 [phrase]

Is there a simple way to do this? I’ve taken lists of things like this
before and added text to it, but I put all of the items in an array
manually first… would someone show me a faster way, please?

Hi Zoe,
Ruby program


full= File.open(“orig.txt”)
phrase=[“phrase1”,“phrase2”,“phrase3”]
count=0
full.each do |line|
first=[]
first=line.split(/|/)
first.each do |single|
sub=single.strip!
main = (sub).to_s + (phrase [count]).to_s
puts main
count+=1
end
end


Orig.txt


item1 | item2 | item3 | item4 |
item11 | item21 | item31 | item41 |
item12 | item23 | item34 | item45 |
item13 | item23 | item33 | item43 |
item14 | item24 | item34 | item44 |


Output


ruby file.rb
item1phrase1
item2phrase2
item3phrase3
item4

item11
item21
item31
item41

item12
item23
item34
item45

item13
item23
item33
item43

item14
item24
item34
item44

Exit code: 0


I dont know this one is very simple but it satisfies ur need

Regards,
P.Raveendran
RailsFactory

Try this one…

full= File.open(“orig.txt”)
phrase=[“phrase1”,“phrase2”,“phrase3”]
count=0
inside=[]
full.each do |line|
first=[]
first=line.split(/|/)
first.each do |single|
sub=single.strip!
main = (sub).to_s + " "+(phrase [count]).to_s

inside << main

newfile=File.new("orig2","w")
newfile.puts inside
newfile.close

count+=1

end
end

Regards,
P.Raveendran
RailsFactory

ahh, I see… thank you :slight_smile:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs