如何在下面的命令中使用变量而不是3
?
sed -i '3s/$/ newvalue/' filename
我试过
var=1
sed -i '$vars/$/ newvalue/' filename
sed -i "$vars/$/ newvalue/" filename
答案 0 :(得分:2)
首先,您需要使用double quotes来扩展shell参数/变量。然后,如果变量后面的文本可以解释为变量名称(before${var}after
)的一部分,则需要使用braces to isolate the variable name。最后,要在双引号下使用文字$
,您应该将其转义为黑色斜杠。一起来:
var=3
sed -i "${var}s/\$/ newvalue/" filename
一种替代方法是使用交替的双引号和单引号(在此引号下不会特别处理任何字符,包括用于参数扩展的$
):
sed -i "$var"'s/$/ newvalue/' filename