2017-02-13 23 views
0

我试图用sed来替代配置文件中的特定行:Sed:如何插入包含单个刻度的模式?

因为我想更换线的模式是:

ALLOWED_HOSTS.* 

我要插入的文本是:

'$PublicIP' (Including the single ticks) 

但是当我运行命令:

sed 's/ALLOWED_HOSTS.*/ALLOWED_HOSTS = ['$PublicIP']/g' /root/project/django/mysite/mysite/settings.py 

行更改为:的

ALLOWED_HOSTS = [1.1.1.1] 

代替:

ALLOWED_HOSTS = ['1.1.1.1'] 

我应如何编辑命令,包括单蜱虫呢?

+0

使用'\ x27'代表单引号... – Sundeep

+1

名次sible重复[如何在sed中单引号转义?](http://stackoverflow.com/questions/24509214/how-to-escape-single-quote-in-sed) – Sundeep

回答

1

你可以尝试逃跑单蜱,或更好的,你可以重新分配的变量,包括简单的刻度:

PublicIP="'$PublicIP'". 

通过连这个sed的不redifining变种的方式,好的工作在我的情况:

$ a="3.3.3.3" 
$ echo "ALLOWED_HOSTS = [2.2.2.2]" |sed 's/2.2.2.2/'"'$a'"'/g' 
ALLOWED_HOSTS = ['3.3.3.3'] 

即使这个工程确定:

$ echo "ALLOWED_HOSTS = [2.2.2.2]" |sed "s/2.2.2.2/'$a'/g" 
ALLOWED_HOSTS = ['3.3.3.3'] 
+0

@Itai Ganot更新。 –