B
Bary Buz
Hello everyone,
i am new to ruby and im having some problems trying to reformat a text
file.
Basically, i have a large log file which is around 200mb in the
following format:
----------------------------------------------------------
1000000 name
Status :A
Basetype :2
Version :1.0
|
|
(more
fields)
|
Name :/file/name/etc
1000001 name
Status :B
Basetype :2
Version :a20
|
|
Name :/file/name/etc
1000002 name
Status :C
|
... and so on
so for each 200mb file there are lot of entries.
What i want to do is to open the file, read the data into an array,
reformat the text and save it into another file with the following
output:
id, Status, Basetype, .... , Name
1000000, A, 2, ..... , /file/name/etc
1000001, B, 2, ..... , /file/name/etc
i tried to write a script in ruby to do that task but i dont get any
output so far.
def getfile(file_name)
entry = []
IO.foreach(file_name) do |fl|
if fl.include? 'name'
entry.push fl.scan(/\d+/)[0]
elsif fl.strip =~ /\A\d/
end
end
entry
end
def writefile(file, *linedata)
linedata.each do |line|
file << line.join(", ") +\n"
end
end
def readfile(file, outputfile)
out = File.new(outputfile, "w+")
info = []
wline = ['id', 'Status', 'Basetype', .... 'Name']
IO.foreach(file) { |line|
if line =~ //
wline[0]= line.scan(/\d+/)
elsif line =~ /Status/
wline[1]= line.split(":")[1].scan(/[a-zA-Z]+/).join("")
elsif line =~ /Basetype/
wline[2]= line.split(":")[1].scan(/\d+/).join("")
|
|
|
wline all fields
|
writefile(out, wline)
end
out.close
end
readfile('filename', 'outputfile')
this is what ive done so far, can someone tell me whats wrong and i dont
get any output at all..
Thanks in advance
i am new to ruby and im having some problems trying to reformat a text
file.
Basically, i have a large log file which is around 200mb in the
following format:
----------------------------------------------------------
1000000 name
Status :A
Basetype :2
Version :1.0
|
|
(more
fields)
|
Name :/file/name/etc
1000001 name
Status :B
Basetype :2
Version :a20
|
|
Name :/file/name/etc
1000002 name
Status :C
|
... and so on
so for each 200mb file there are lot of entries.
What i want to do is to open the file, read the data into an array,
reformat the text and save it into another file with the following
output:
id, Status, Basetype, .... , Name
1000000, A, 2, ..... , /file/name/etc
1000001, B, 2, ..... , /file/name/etc
i tried to write a script in ruby to do that task but i dont get any
output so far.
def getfile(file_name)
entry = []
IO.foreach(file_name) do |fl|
if fl.include? 'name'
entry.push fl.scan(/\d+/)[0]
elsif fl.strip =~ /\A\d/
end
end
entry
end
def writefile(file, *linedata)
linedata.each do |line|
file << line.join(", ") +\n"
end
end
def readfile(file, outputfile)
out = File.new(outputfile, "w+")
info = []
wline = ['id', 'Status', 'Basetype', .... 'Name']
IO.foreach(file) { |line|
if line =~ //
wline[0]= line.scan(/\d+/)
elsif line =~ /Status/
wline[1]= line.split(":")[1].scan(/[a-zA-Z]+/).join("")
elsif line =~ /Basetype/
wline[2]= line.split(":")[1].scan(/\d+/).join("")
|
|
|
wline all fields
|
writefile(out, wline)
end
out.close
end
readfile('filename', 'outputfile')
this is what ive done so far, can someone tell me whats wrong and i dont
get any output at all..
Thanks in advance