2016-11-15 3 views
-4

Я пытаюсь заменить строку в следующем файле с другой строкой, которая оказывает особый характер, как (= ", -).Используя скрипт для замены строки в файле с другой строкой, имеющих особый характер

Это служебный файл, мне нужно настроить и добавить снова

#!/bin/bash 

. /etc/init.d/functions 

PIDFILE=/var/run/Naming_Service.pid 

PORT= 

OPTIONS="-p ${PIDFILE}" 

RETVAL=0 

prog="Naming_Service" 

    start() { 
     echo -n $"Starting $prog: " 

     if [ $UID -ne 0 ]; then 

      RETVAL=1 

      failure 

     else 

      setsid /usr/local/bin/Naming_Service ${OPTIONS} & 

      RETVAL=$? 


     fi 

     echo 

     return $RETVAL 

    } 

Naming Service для этого файла рестарта в этом файле я хочу заменить первое вхождение

OPTIONS = «- р $ {PIDFile}»

заменить

OPTIONS_1234 = "- р $ {PIDFILE_1234} -ORBEndpoint МИОП: //10.12.23.34: 1234"

OPTIONS_1235 = "- р $ {PIDFILE_1235} -ORBEndpoint МИОП: //10.12.23.34: 1235"

OPTIONS_1236 = "- р $ {PIDFILE_1236} -ORBEndpoint МИОП: //10.12.23.34: 1236"

Я написал на e shell script с командой sed, у меня есть проблемы со специальными символами. Пожалуйста, вы можете дать разрешение для этого

PORT_NS=13021 

PIDFILE=/home/vagrant/Naming_Service_${PORT_NS}.pid 

PIDFILE_13016=/home/vagrant/Naming_Service_${PORT_NS}.pid 

ORIGINAL="OPTIONS="-p ${PIDFILE}"" 

REPLACE="OPTIONS_13016="-p ${PIDFILE_13016} -ORBEndpoint iiop://172.31.153.56:13016"" 

sed -i "0,/$ORIGINAL/s//$REPLACE/" "tao" 
+3

Покажите нам свой файл сценария _shell с командой sed_. –

+0

Я сделал это основным способом, как я написал следующее cmd в файле sed -i '0,/$ ORIGINAL/$ REPLACE' filename –

+0

«Проблемы со специальными символами»? Хмм, я бы хотел, чтобы вы написали, какие специальные символы вызывают у вас проблемы, тогда, может быть, мы/мы могли бы помочь. Но я не могу тратить время на угадывание. (Пожалуйста, обновите свой Q тем, что НЕ работает, включая (очень) небольшую выборку «специальных символов» И ваш необходимый результат после их обработки. OK? ;-)). Удачи. – shellter

ответ

0

Попробуйте

sed '0,/\PIDFILE=\/var\/run\/Naming_Service.pid/ s//\PIDFILE_1234=\/var\/run\/Naming_Service_1234.pid\n\PIDFILE_1235=\/var\/run\/Naming_Service_1235.pid\n\PIDFILE_1236=\/var\/run\/Naming_Service_1236.pid\n /' script > newscript 
sed '0,/\OPTIONS="-p ${PIDFILE}"/ s//\OPTIONS_1234="-p ${PIDFILE_1234} -ORBEndpoint iiop:\/\/10.12.23.34:1234"\n\OPTIONS_1235="-p ${PIDFILE_1235} -ORBEndpoint iiop:\/\/10.12.23.34:1235"\n\OPTIONS_1236="-p ${PIDFILE_1236} -ORBEndpoint iiop:\/\/10.12.23.34:1236"\n /' newscript > script 

должен выводить то, что вам нужно.

+0

Его удаление моего полного файла и отображение ошибки, как addns.sh: 8: addns.sh: sed0,/\ PIDFILE = \/var \/run \ /Naming_Service.pid/s // \ PIDFILE_1234 = \/var \/запустите \ /Naming_Service_1234.pid \ n \ PIDFILE_1235 = \/var \/run \/Naming_Service_1235.pid \ n \ PIDFILE_1236 = \/var \/run \ /Naming_Service_1236.pid \ n /: не найдено sed: -e выражение # 1, char 107: unterminated 's 'команда –

+0

действительно странно, на моем компьютере работает безупречно , Вы копировали и вставляли? –

+0

снова протестирован. Синтаксис команды правильный –

Смежные вопросы