Remove specific text from line

Hi
thanks for all the help on my previous question, but now I am trying to
clean up the output of some text output.

currently I have:
[email protected]: EVENT: [LOG] *** DEBUG ACTION ***

and I’d like it to have:
110.075:DEBUG ACTION

: just for easy import into excel.

Here is the current ruby file I am working with where is looked for
lines with DEBUG and START in them.

File.open(‘output.txt’, ‘w’) do |f2|
File.readlines(“original.txt”).each do |line|
if line =~ /DEBUG/ || line =~ /START/
f2.puts line
end
end
end

Any ideas?

thanks for your help :slight_smile:

On Mon, Oct 12, 2009 at 3:27 PM, Collin M.
[email protected]wrote:

: just for easy import into excel.
end

Any ideas?

thanks for your help :slight_smile:

Posted via http://www.ruby-forum.com/.

why don’t you gsub(‘[email protected]’, ‘’).gsub(’ EVENT: [LOG] *** ‘, ‘’).gsub(’
***’,
‘’)

Greg

On 10/12/09, Collin M. [email protected] wrote:

: just for easy import into excel.
end

Any ideas?

You want a regexp. Something like this should work. (Stick it in
before the puts line.) (You may need to customize depending on your
exact requirements.)

line.sub!(/^[email protected] (\d+.\d+):.**{3} ([A-Z]+ [A-Z]+) *{3}$/){ $1+’:’+$2
}

Hi!

I think you can use the following solution:

class TestClass
def test(val)
val.scan(/^[^@][email protected](\d{1,3}.\d{1,3})[^]+*{3}\s([^*]+)/) do
puts $1+" : "+$2
end
end
end

myInst=TestClass.new
myInst.test(“[email protected]: EVENT: [LOG] *** DEBUG ACTION ***”);

The result is: 110.075 : DEBUG ACTION

It’s because I put line myInst.test(“[email protected]: EVENT: [LOG] ***
DEBUG ACTION ***”);
There’s string literal: “[email protected]: EVENT: [LOG] *** DEBUG ACTION
***”
If you want parse file content you must read lines and put it to method:

File.open(“fname.txt”).each do |line|
myInst.test(line)
end

Caleb C. wrote:

On 10/12/09, Collin M. [email protected] wrote:

: just for easy import into excel.
end

Any ideas?

You want a regexp. Something like this should work. (Stick it in
before the puts line.) (You may need to customize depending on your
exact requirements.)

line.sub!(/^[email protected] (\d+.\d+):.**{3} ([A-Z]+ [A-Z]+) *{3}$/){ $1+’:’+$2
}

I tried this with

File.open(‘output.txt’, ‘w’) do |f2|
File.readlines(“original.txt”).each do |line|
if line =~ /DEBUG/ || line =~ /START/
f2.puts line.sub!(/^[email protected] (\d+.\d+):.**{3} ([A-Z]+ [A-Z]+)
*{3}$/){ $1+’:’+$2 }
end

end
end

and I get the output.txt with nil for each positive match.

Alexey B. wrote:

Hi!

I think you can use the following solution:

class TestClass
def test(val)
val.scan(/^[^@][email protected](\d{1,3}.\d{1,3})[^]+*{3}\s([^*]+)/) do
puts $1+" : "+$2
end
end
end

myInst=TestClass.new
myInst.test(“[email protected]: EVENT: [LOG] *** DEBUG ACTION ***”);

The result is: 110.075 : DEBUG ACTION

I tried this and 110.075 : DEBUG ACTION repeats for all the lines in the
output.