2016-11-15 150 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 
相关问题