1

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

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

1
  • 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 Jul 8 '15 at 10:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.