Использование sed для замены строки другой строкой, содержащей специальный символ в ksh

Я пытаюсь заменить @sys на amd64_linux26_rh5.64 командой sed .

 #!/bin/ksh file_path="/xxx/xxx/xxx/@sys/xxx" os="amd64_linux26_rh5" osver="amd64_linux26_rh5.64" sys="@sys" echo "osver: $osver" echo "old file_path is : $file_path" file_path=$(echo "$file_path" | sed "s/$sys/${osver}/") echo "new file_path is : $file_path" 

Но получение результата:

 osver: amd64_linux26_rh5.64 old file_path is : /xxx/xxx/xxx/amd64_linux26_rh5/xxx new file_path is : /xxx/xxx/xxx/amd64_linux26_rh5/xxx 

Я также попробовал file_path=$(echo "$file_path" | sed "s/$sys/${os}\.64/") но не сделал то же самое.

Заранее спасибо!

Interesting Posts

Изменения в / etc / hosts не распознаются командами оболочки до выхода из системы и входа в систему

Что означают флаги в / proc / cpuinfo?

Просмотр очень широких файлов

Конвертировать двоичную кодировку, которую голова и Блокнот могут читать в UTF-8

Приложения Qt4 не работают в Xephyr

бег strace в течение определенного периода времени

Как я могу создать пользователей с единственным удаленным ftp-доступом на сервере Linux?

Поиск функций, команд и встроенных функций

Разница между характеристиками сопряженных интерфейсов b / w CentOS 6 и RHEL 6

Преобразование файлов в OGG с помощью FFMPEG создает чрезвычайно большой файл

Virtualbox жалуется, что у меня нет заголовков

Как я рекурсивно применяю ACL по умолчанию для каталога для своих потомков?

Как слить (без копирования) два каталога?

Настроить и скомпилировать syslog-ng из источника, получил: нити не поддерживаются на этой платформе

Получение «Жесткий диск может быть неудачным» при запуске

Linux и Unix - лучшая ОС в мире.