Hi everyone, Thank-you all for replying so quickly: As Elvio simply put it: awk -F":" '{printf("%s:*LK*:%s::::::\n",$1,$3)}' /etc/shadow While Luc said, egrep -v luc /etc/shadow > /tmp/shadow echo 'luc:*LK*:::::::' >> /tmp/shadow cp /tmp/shadow /etc/shadow rm /tmp/shadow chmod 400 /etc/shadow For info, I tried using an @ instead of a /, but got the same result, gsed -e 's@'`echo `cut -d: -f2 shadow.t`|gsed -s 's@\/@\\\/@g'`'@\*LK\*@' <shadow.t shadow.n ./test: syntax error at line 1: `|' unexpected Awk wins this time. I'd still like to know the sed solution, though. Many thanks to you all, S. LOEWENTHAL Simon wrote: > Dear all Sed madmen, > > I'm trying to write something that sets the encrypted field in the > shadow file to *LK*, but sed will choke whenever the field has a / in > it, so I wrote something to nest sed inside sed with cut so that it > replaces instances of / with /\ > > However, sed chokes when interpreting the |. I have tried putting ' > and ` in all the places I can think of, but it usually makes it worse. > > Cut the encrypted password out and then get gsed to replace the / with > \, which work fine. > > Cat shadow.t > > GogunE:ndY3rmE/bkxt.:12180:::::: > > echo `cut -d: -f2 shadow.t`|gsed -s 's/\//\\\//g' > > What it correctly produces, > > ndY3rmE\/bkxt. > > Finally I use gsed to replace the earlier output with *LK*. > > gsed -e 's/'`echo `cut -d: -f2 shadow.t`|gsed -s > 's/\//\\\//g'`'/\*LK\*/' <shadow.t > > Then it chokes, > > ./test: syntax error at line 1: `|' unexpected > > Regards, S. > > PS. I'm sorry that this is not Sun specific, but I think that there > are plenty of sed users in the audience, but I've been at this for the > past 5 hours and am starting to doubt my sanity. > -- ISG/Gemini/AURA _______________________________________________ sunmanagers mailing list sunmanagers@sunmanagers.org http://www.sunmanagers.org/mailman/listinfo/sunmanagersReceived on Tue May 31 11:43:48 2005
This archive was generated by hypermail 2.1.8 : Thu Mar 03 2016 - 06:43:47 EST