in reply to Matching Multiple Lines

I've received a few downvotes on the original post, so I think I should step in here and clarify that this is not a homework problem. :-) It's actual work-related stuff.

I know that it can be done using a for() loop (thanks, though), but it seems like there ought to be a way to do it using just a regex. (Whoops! I didn't specify that in the problem. Doh! Okay, bad problem spec on my part.)

I'm thinking I could just specify "\n" 7 times in the regex, but the "0" has to be at the start of the line. In other words, it must follow a "\n" -- unless it is at the start of the file. That part has me stumped. I guess I could prepend a "\n" onto the start of the file, then remove it after I'm done, but that feels ... icky.

Wally Hartshorn

Replies are listed 'Best First'.
Re: Matching Multiple Lines (Re: A Clarification)
by Kanji (Parson) on Jan 02, 2003 at 23:45 UTC
    perl -0777 -pi.bak -e 's/^0(.*\n){1,8}//mg' file

    Sure it's a lot more compact, but it suffers the same problem as my non-regex solution, is going to suck majorly for large files, and is (IMHO) less obvious about what it's actually doing, especially to those unfamiliar with Perl (YMMV).

        --k.

    Update: Oops, meant -0777 not -00.


      Very good, Kanji! That does exactly what I want! Speed isn't really an issue, and it's a one-time task. The file is several thousand lines long, and doing it by hand just didn't appeal. :-)

      This will be a great help. Thanks!

      Wally Hartshorn