Re: perl or sed s/// problem

Top Page
Attachments:
Message as email
+ (text/plain)
+ signature.asc (application/pgp-signature)
+ (text/plain)
Delete this message
Reply to this message
Author: Jason Holtzapple
Date:  
To: plug-discuss
Subject: Re: perl or sed s/// problem
On 08/05/2010 10:44 AM, David wrote:
>
> I'm having a problem with perl *and* sed with a particular replace line. The lines I'm trying to search for, and replace, both have "/" characters, which is completely killing me.
>
> line="password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3"
> newline="password required /lib/security/$ISA/pam_cracklib.so minlen=8 dcredit=-1 ucredit=-1 lcredit=0 minclass=3  retry=3"

>
> I need to maintain whitespace, too.
>
> perl -p -i -e s/"$line"/"$newline"/ file
>
> That tosses out all kinds of errors, since perl believes the first "/lib" line to be the next delimiter. Even using the magical \Q and \E things doesn't work. AARRGGHH!!!
>
> Sed seems to have the same problem. Anyone have any ideas on how I can get this to work? And yes, unfortunately, I need to use the variables.


Try something like

$ sed -e "s|$line|$newline|" file

You probably also want to define your variables like line='password ...'
so that the shell preserves the literal value of $.

---------------------------------------------------
PLUG-discuss mailing list -
To subscribe, unsubscribe, or to change your mail settings:
http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss