Beefy Boxes and Bandwidth Generously Provided by pair Networks Russ
Think about Loose Coupling
 
PerlMonks  

Re: newlines in regular expressions

by tachyon (Chancellor)
on Dec 07, 2004 at 01:29 UTC ( [id://412841]=note: print w/replies, xml ) Need Help??

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


in reply to newlines in regular expressions

The keys as it were are to note that \n\n is a blank line or if you read a file line by line then a blank line will match m/^\s*$/

perl -pi.bak -e 's/\n{2,}/\n/' file.txt
perl -pi -e 's/^\s*\z//' file.txt perl -ne 'print unless m/^\s*$/' file.txt > noblanks.txt

Update

Updated as per sgifford's comments.

cheers

tachyon

Replies are listed 'Best First'.
Re^2: newlines in regular expressions
by sgifford (Prior) on Dec 07, 2004 at 01:57 UTC
    A few nits: The first answer requires that Perl read in slurp mode, and needs a g modifier to replace all occurences:
    perl -p -e 'BEGIN { undef $/ } s/\n{2,}/\n/g'

    Also, the two examples behave differently in the face of lines that contain only blank characters, like space and tab. The second will delete them, while the first will leave them intact. You can make the second leave them intact by using m/^$/; to make the first delete whitespace-only lines I think s/\n\s*\n/\n/g will work, but I haven't thought it through yet.

      perl -p -e 'BEGIN { undef $/ } s/\n{2,}/\n/g'

      Which can be shortened to:

      perl -p0777e 's/\n{2,}/\n/g'
      See perldoc perlrun for details of perl's -0 option.

      It is as you say.

      perl -pi -e 's/^\s*\z//' file.txt deals with blank lines with other whitespace.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://412841]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.