O shell script de substituição de strings no AIX

0

Estou usando AIX e não há uma opção -i disponível na versão de sed que estou usando:

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

Eu quero substituir o caminho do diretório em um dos arquivos usando um script; Eu estou tentando assim:

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

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

que indica o erro:

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

Eu gostaria de substituir todas as ocorrências como $ WORKDIR por $$ ARCHIVE

    
por Grv 08.07.2015 / 09:23

1 resposta

1

As variáveis da shell só são resolvidas entre aspas duplas (").

sed "s/$WORKDIR/$ARCHIVE/ig" test.dat > abc (aspas duplas)

Funcionaria se não fosse pelas barras. Sed pode usar qualquer caractere para delimitar esses campos de entrada e a barra talvez não seja a melhor escolha, pois é usada em caminhos de diretórios. Por exemplo, você pode usar isso:

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

    
por 08.07.2015 / 12:48