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:
Time@110.075: 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:

···

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

why don't you gsub('Time@', '').gsub(' EVENT: [LOG] *** ', '').gsub(' ***',
'')

Greg

···

On Mon, Oct 12, 2009 at 3:27 PM, Collin Moore <collin.moore@gmail.com>wrote:

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:
Time@110.075: 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:
--
Posted via http://www.ruby-forum.com/\.

--
www.abetaday.com

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!(/^Time@ (\d+\.\d+):.*\*{3} ([A-Z]+ [A-Z]+) \*{3}$/){ $1+':'+$2 }

···

On 10/12/09, Collin Moore <collin.moore@gmail.com> wrote:

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:
Time@110.075: 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?

Hi!

I think you can use the following solution:

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

myInst=TestClass.new
myInst.test("Time@110.075: EVENT: [LOG] *** DEBUG ACTION ***");

The result is: 110.075 : DEBUG ACTION

···

On Mon, Oct 12, 2009 at 11:40 PM, Caleb Clausen <vikkous@gmail.com> wrote:

On 10/12/09, Collin Moore <collin.moore@gmail.com> wrote:

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:
Time@110.075: 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?

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!(/^Time@ (\d+\.\d+):.*\*{3} ([A-Z]+ [A-Z]+) \*{3}$/){ $1+':'+$2 }

Caleb Clausen 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!(/^Time@ (\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!(/^Time@ (\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.

···

On 10/12/09, Collin Moore <collin.moore@gmail.com> wrote:

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

Alexey Bovanenko wrote:

Hi!

I think you can use the following solution:

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

myInst=TestClass.new
myInst.test("Time@110.075: 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.

···

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

It's because I put line myInst.test("Time@110.075: EVENT: [LOG] ***
DEBUG ACTION ***");
There's string literal: "Time@110.075: 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

···

On Tue, Oct 13, 2009 at 1:09 AM, Collin Moore <collin.moore@gmail.com> wrote:

Alexey Bovanenko wrote:

Hi!

I think you can use the following solution:

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

myInst=TestClass.new
myInst.test("Time@110.075: 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.

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