2016-11-15 5 views
0

Я пытаюсь заменить следующую строку нескольких строк следующим образомShell скрипт для замены строки, имеющей место с другой строкой

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

заменяя

setsid /usr/local/bin/Naming_Service ${OPTIONS_13016} & 
setsid /usr/local/bin/Naming_Service ${OPTIONS_13018} & 

Я попытался с помощью этой команды

sed '0,/setsid \/usr\/var\/run\/Naming_Serivce ${OPTIONS}/s//setsid \/usr\/var\/run\/Naming_Serivce ${OPTIONS_13016}\n\setsid \/usr\/var\/run\/Naming_Serivce ${OPTIONS_13018}\n /' script > new_script 

Вы можете помочь решить

ответ

0
sed 's/^\(.*\)\(${OPTIONS}\)\(.*\)$/\1${OPTIONS_13016}\3\n\1${OPTIONS_13018}\3/' <script> new_script 
  • (...) - создавать группы
  • \ 1 \ 3 - с помощью этих групп
  • \ п -.
  • новой строки
  • * - любой символ
+0

Хотя этот фрагмент кода может решить вопрос, включая объяснение [действительно помогает] (// meta.stackexchange.com/q/114762), чтобы улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, а не только на человека, который спрашивает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение, и укажите, какие ограничения и допущения применяются. –

+0

Его забота обо мне, дайте мне знать \ 1 \ 3, как именно он будет работать –

+0

\ 1 представляет первую группу, \ 2 - второй ($ {OPTIONS}), а \ 3 - это остальное. –

0

для вашего требования использование ниже синтаксиса

sed -e "s/setsid \/usr\/local\/bin\/Naming_Service \${OPTIONS}/setsid \/usr\/local\/bin\/Naming_Service \${OPTIONS_13016} \&\nsetsid \/usr\/local\/bin\/Naming_Service \${OPTIONS_13018}/g" script > new_script 
Смежные вопросы