in reply to match a word and delete last line

#!/usr/bin/perl # http://perlmonks.org/?node_id=1190966 use strict; use warnings; $_ = do { local $/; <DATA> }; s/^(\w+[-_]\d+)\n(?=.*\1\b)//gm; print; __DATA__ Text_1 sample-text file Text_1 matching the 1st line matching the last line Text text_1 text-2 sample-text file text-2 matching the 1st line matching the last line

Replies are listed 'Best First'.
Re^2: match a word and delete last line
by ArifS (Beadle) on May 23, 2017 at 14:03 UTC
    tybalt89, how do I modify to remove the previous line word if doesn't include (d,_,-) for example if only says Text.
    sample-text file Text-1 matching the 1st line matching the last line text text_1 sample-text file text-2 matching the 1st line matching the last line text_1 text-2 text sample-text file text matching the 1st line matching the last line
    I need to remove the following ( text ) too-
    ..................... text_1 text-2 text sample-text file text matching the 1st line matching the last line

      Try this, but your question is a little unclear. Please give an exact input and output test case, not a partial one.

      #!/usr/bin/perl # http://perlmonks.org/?node_id=1190966 use strict; use warnings; $_ = do { local $/; <DATA> }; s/^(\w+(?:[-_]\d+)?)\n(?=.*\1\b)//gm; print; __DATA__ Text_1 sample-text file Text_1 matching the 1st line matching the last line Text text_1 text-2 sample-text file text-2 matching the 1st line matching the last line text_1 text-2 text sample-text file text matching the 1st line matching the last line
        That works. I was missing (?: ). Thank you.
Re^2: match a word and delete last line
by ArifS (Beadle) on May 23, 2017 at 13:45 UTC
    That works. Thank you.