2016-11-15 186 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 - 使用這些羣體
  • \ n - 換行符
  • * - 任何字符
+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