替换两个JavaScript注释之间的代码

时间:2014-11-05 15:11:24

标签: javascript regex bash replace sed

我需要从bash设置一个JavaScript变量的值。 变量存在于index.html文件中,我想使用unix SED命令来执行此操作。 在index.html里面,我有这个湖:

<script>
/*bash_var*/ var foo = 1;  /*end_bash_var*/
</script>

我试着这样做:

sed -i -e 's%/*bash_var*/(.*)/*end_bash_var*//'"$ var foo = 0; /g" index.html

以及此命令的更多变体,但我总是遇到一些错误。

感谢您的帮助。

更新

预期产出:

<script>
/*bash_var*/ var foo = 0;  /*end_bash_var*/
</script>

2 个答案:

答案 0 :(得分:1)

你需要逃避*。此外,您的'错误,并且不需要%

sed 's#\(/\*bash_var\*/\).*\(/\*end_bash_var\*/\)#\1 var foo = 0; \2#'

请注意,我使用#作为分隔符,而不是/。这样我就可以在表达式中使用/而无需转义它们。这使得sed命令更具可读性。然而,这仍然是乏味的。你能把你的index.htm重写成这样的东西吗?

<script>
//BASHVAR
var foo = 1;
</script>

然后你可以使用

sed '/BASHVAR/{n; s/.*/var foo = 0;/;}'

答案 1 :(得分:1)

sed 's#\(/\*bash_var\*/ *var foo = \).*\(; */\*end_bash_var\*/\)#\10\2#'

如果只是此上下文中foo的值