Я использую 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.

1 ответ1

1

Переменные оболочки разрешаются только между двойными кавычками (").

sed "s/$WORKDIR/$ARCHIVE/ig" test.dat > abc (двойные кавычки)

Сработало бы, если бы не косые черты. Sed может использовать любой символ для разделения этих полей ввода, и косая черта, возможно, не лучший выбор, поскольку он используется для путей к каталогам. Например, вы можете использовать это вместо:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .