Сценарий замены строки в AIX

3212
Grv

Я использую AIX, и -iв версии, sedкоторую я использую, нет опции, доступной :

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

Я хочу заменить путь к каталогу в одном из файлов, используя скрипт; Я пытаюсь так:

WORKDIR="/workdir/liv/spool" ARCHIVE="u/user/new"  sed 's/$WORKDIR/$ARCHIVE/ig' test.dat > abc mv abc test.dat 

который дает ошибку:

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

Я хотел бы заменить все вхождения, аналогичные $ WORKDIR, на $$ ARCHIVE.

0

1 ответ на вопрос

1
Jack

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

Этого не произойдет, потому что в содержимом переменной есть косые черты: используйте различные разделители для команды `s`:` sed "s: $ WORKDIR: $ ARCHIVE: ig" test.dat> abc` glenn jackman 9 лет назад 0
Отлично работает # разделитель работал на меня. Спасибо человеку Grv 9 лет назад 0