need help with sed problem
Tony Pursell
ajp at princeswalk.fsnet.co.uk
Fri Mar 18 23:01:38 UTC 2011
On Fri, 2011-03-18 at 18:22 +0000, Tony Pursell wrote:
> On Fri, 2011-03-18 at 17:47 +0000, Joao Ferreira gmail wrote:
> > Hello all
> >
> > I need to use sed to replace a given line in a text file with the
> > current working directory. But this is getting quite tricky. Problem
> > ilustrated below:
> >
> > ====================================
> > $ cat text.txt
> > aaaa
> > bbbb:/some/wrong/path/
> > cccc
> >
> > $ sed s/bbbb.*/bbbb:$TERM/ text.txt
> > aaaa
> > bbbb:xterm
> > cccc
> >
> > $ sed s/bbbb.*/bbbb:$PWD/ text.txt
> > sed: -e expression #1, char 16: unknown option to `s'
> > =====================================
> >
> > I'd like to have
> >
> > ====================================
> > aaaa
> > bbbb:/home/myself
> > cccc
> > ====================================
> >
> > Can anyone help ? thanks in advance.
> >
> > Joao
> >
> >
> >
>
> This is what you want
>
> sed /^bbbb.*/s?.*?bbbb:$PWD? txt.txt > newtxt.txt
>
> Note:
> /bbbb.*/ addresses the line you want to change.
>
> The error you got is due to $PWD being expanded to /home/myself *before*
> the command is executed. The way round it is to use the little known
> facility to use any character instead of / in the substitute command (I
> have used ?).
>
> Tony
>
Just another point. $PWD will usually give you the home directory as it
is set when you log in and the current working directory will be your
home directory, but you really should use $HOME, which will always be
your home directory.
Tony
More information about the ubuntu-users
mailing list