2015-02-24 85 views
0

这可能是愚蠢的简单,但我一直在寻找过去3个小时试图找出解决方案。我需要在一个文件(/etc/reliance.env)中插入一个单词(由变量“$ t”定义),在另一个恰好有“/”的单词之前。 (假设“/定制”)使用/在sed搜索/替换字符串

我目前的解决方案涉及用$ t/custom替换/定制。问题在于sed似乎不喜欢使用字符“/”。无论如何,我确信有一个更有效的解决方案。任何见解?提前致谢!

 if grep "/custom" /etc/reliance.env; then 
     sed -i 's/"/custom/"/"$t /custom/"/g' reliance.env 

回答

2

您可以使用几乎任何字符作为s///命令中的分隔符。如果你需要在你的模式或更换只需要使用其他东西斜杠。

sed -i "s,/custom,$t &,g" reliance.env 

(我在这又意味着“整场比赛”,以避免需要键入它的替代物&。)

你还需要,如果你想在双引号(而不是单引号) shell扩展$t变量。如果没有,那么单引号就是你想要的。

除非你的文件是非常大的,或者您需要对其进行修改,除非是内容是否有运行grep第一可能没有必要(和你一定要告诉grep停在首场比赛-m 1因为这是alll你关注和沉默grep的输出与-q)。

+0

这个伎俩!感谢:D – perseusraz 2015-02-24 21:47:01

0

逃脱字符:

sed -i "s/\/custom/\$t \custom/g/" reliance.env 

编辑:另外,通过文件grepping不大大快上运行它sed,所以只跳过if grep ...,只是做你的sed ING。