Sed分隔符选项

Sed分隔符选项,sed,delimiter,Sed,Delimiter,在我的代码中,我需要用地址替换变量赋值: sed -i "s/^variable = .*$/variable = http://myaddress/" 显然,这不起作用,因为地址中的正斜杠在sed命令中可以识别 我希望将$保留在第一个表达式的末尾,以替换行末尾的任何内容。我也不想逃避美元符号本身,\$,因为它将搜索美元符号 另外,我不想仅仅逃避地址中的前斜杠,因为在某些地方地址也有变量 我尝试使用而不是/,但必须包含我不想包含的内容--\$ 是否有适合我的情况的可选分隔符?shell将解释$

在我的代码中,我需要用地址替换变量赋值:

sed -i "s/^variable = .*$/variable = http://myaddress/"
显然,这不起作用,因为地址中的正斜杠在sed命令中可以识别

我希望将
$
保留在第一个表达式的末尾,以替换行末尾的任何内容。我也不想逃避美元符号本身,
\$
,因为它将搜索美元符号

另外,我不想仅仅逃避地址中的前斜杠,因为在某些地方地址也有变量

我尝试使用
而不是
/
,但必须包含我不想包含的内容--
\$


是否有适合我的情况的可选分隔符?

shell将解释
$
。使用
将整个参数包装到sed以防止出现这种情况

sed -i 's#^variable = .*$#variable = http://myaddress#'
应该对你有用


请注意,第一个表达式中的
$
不是文献中的“dollar”,而是一个regex表达式,表示行的结尾。

贪婪的
*
应该使
$
多余,它无论如何都会匹配到行的结尾。sed-i“s@^ variable=.$@variable=http://${ENV_VAR}@文件仍然将中间的$@视为变量。在命令的周围使用单引号,而不是双引号。
sed -i 's#^variable = .*#variable = http://myaddress#'
sed -i 's#^variable = .*#variable = http://myaddress#'