String replacement shell script on AIX

0

I am using AIX, and there is not an -i option available in the version of sed I am using:

sed: illegal option -- i
Usage:  sed [-n] Script [File ...]
        sed [-n] [-e Script] ... [-f Script_file] ... [File ...]

I want to replace the path of the directory in one of the file using a script; I am trying like this:

WORKDIR="/workdir/liv/spool"
ARCHIVE="u/user/new"

sed 's/$WORKDIR/$ARCHIVE/ig' test.dat > abc
mv abc test.dat

which gives the error:

sed: Function s/$WORKDIR/$STRATIXARCHIVE/ig cannot be parsed.

I would like to replace all occurrences same as $WORKDIR with $$ARCHIVE

Grv

Posted 2015-07-08T07:23:07.010

Reputation: 5

Answers

1

Shell variables only resolve between Double Quotes (").

sed "s/$WORKDIR/$ARCHIVE/ig" test.dat > abc (Double quotes)

Would work if not for the forward slashes. Sed can use any character to delimit those input fields and forward slash is perhaps not the best choice due to it's use for directory paths. For example you can use this instead:

sed "s#$WORKDIR#$ARCHIVE#ig" test.dat > abc

Jack

Posted 2015-07-08T07:23:07.010

Reputation: 589

It won't, because there are slashes in the variable contents: use different delimiters for the s command: sed "s:$WORKDIR:$ARCHIVE:ig" test.dat > abc – glenn jackman – 2015-07-08T10:51:28.120

Works fine # delimiter worked for me.thanks man – Grv – 2015-07-09T09:14:21.273