On 3/22/07, Andrew Stewart <boss / airbladesoftware.com> wrote:
> Hello,
>
> What's a (good!) way to remove lines matching a pattern from a
> multiline string?
>
> For example, I would like to remove lines matching /usr/local/lib
> from the multiline string:
>
>      /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/
> action_controller/test_process.rb:382:in `process'
>      /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/
> action_controller/test_process.rb:353:in `post'
>      test/functional/orders_controller_test.rb:241:in
> `test_should_handle_errors_on_edit'
>
> ...to give:
>
>      test/functional/orders_controller_test.rb:241:in
> `test_should_handle_errors_on_edit'
>
> I tried matching the pattern-to-remove with gsub and substituting an
> empty string, but that leaves me with lots of blank lines and not
> really any nearer to the answer.

You could change your lines into an array of lines and then remove the
lines that match:

lines = []
File.new("text.txt").read.each_line {|line|  lines << line }
lines.delete_if {|line| line =~ /\/usr\/local\/lib/}




-- 
If you could create a machine that copies hamburgers you put one
hamburger in and two equally good hamburgers come out the other side it would be unethical not to do so and make it freely available.