Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

remove specific spaces within some patternme

by gdanenb (Acolyte)
on Oct 24, 2011 at 09:52 UTC ( #933335=perlquestion: print w/replies, xml ) Need Help??
gdanenb has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I'm looking for a way to remove spaces only according specific pattern in a string using perl in command line.

For example:

f none jboss/docs/licenses/Common Public License v1.0 - cpl-v10.html=$ +CELL/docs/licenses/Common Public License v1.0 - cpl-v10.html 0644 $CE +LL_USER $CELL_GROUP to be: f none jboss/docs/licenses/CommonPublicLicensev1.0-cpl-v10.html=$CELL/ +docs/licenses/CommonPublicLicensev1.0-cpl-v10.html 0644 $CELL_USER $C +ELL_GROUP

Replies are listed 'Best First'.
Re: remove specific spaces within some patternme
by pvaldes (Chaplain) on Oct 24, 2011 at 10:19 UTC

    Can you explain better how is your expected data and the desired pattern that you want to match?

    perl -pi'*.bak' -e 's/Common Public License v/CommonPublicLicensev/' m +yfile perl -pi'*.bak' -e 's/\s-\s/-/' myfile

    Update. Or even better:

    perl -pi.bak -e 's/Common Public License v/CommonPublicLicensev/' -e 's/\s-\s/-/' myfile

    And second update. It seems that the desired patterns can appear several times in the same line, so you need to add a final g here: 's/Common Public License v/CommonPublicLicensev/g' and here 's/\s-\s/-/g'

    And that's all

      The string I posted was just an example
      It's taken from Solaris Prototype file used for packaging.
      So,it much more than that

      f none jboss/docs/licenses/BSD style license - bsd.txt=$CELL/docs/lice +nses/BSD style license - bsd.txt 0644 $CELL_USER $CELL_GROUP f none jboss/docs/licenses/BSD style - license.html=$CELL/docs/license +s/BSD style - license.html 0644 $CELL_USER $CELL_G ROUP f none jboss/docs/licenses/Common Development And Distribution License + (CDDL) Version 1.0 - cddl.html=$CELL/docs/licenses/Common Developmen +t And Distribution License (CDDL) Version 1.0 - cddl.html 0644 $CELL_ +USER $CELL_GROUP
        It seems that you don't have here a decently constant pattern. Alternativelly you could also replace all spaces by "nothing" and then restore two or three exceptions, like fnonejboss, etc. It depends a lot on your specific input data file
        perl -pe 's: (?!.*\bjboss/)(?=.* 0644 )::g'

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://933335]
Approved by keszler
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2018-05-25 15:18 GMT
Find Nodes?
    Voting Booth?