几次不同的字符串替换相同的字符串在文件中我有一个文件与此内容使用bash
import os
import sys
sys.path.append('/home/user/dj/project/')
sys.path.append('/home/user/dj/')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj.settings")
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
/home/user/dj/proj/
和/home/user/dj/
可能是其他未知值。
我有一个bash脚本做安装,并在那里我想执行的东西这些线路改变这种
import os
import sys
sys.path.append('/var/django/proj/')
sys.path.append('/var/django/')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj.settings")
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我试着用sed
但我不得不用正则表达式的贪婪烦恼。
我试过perl -pi -e s/str1/str2/
但我遇到了麻烦,因为perl重新发生了所有的事情。
编辑: 为了澄清,我想只替换单引号内的值。即:
sys.path.append('foo')
与sys.path.append('what I want')
和
sys.path.append('bar')
与sys.path.append('the second thing I want')
和bar
可能是不同或相同foo
你能澄清你的意思是“其他,未知的价值”?你想用'/ var/django'替换所有'/ home/user/XXX'目录吗?还是比这更复杂? – 2012-04-04 17:29:00
我不确定正则表达式是否是正确的工具。你有没有想过只使用某种配置文件?在安装过程中将所需的dir名称放在配置文件中,然后将它们读入'sys.path.append('/ path/from/config /')' – alan 2012-04-04 17:34:33
@ F.J:我编辑了问题以阐明此问题。分隔符是单引号。 – jperelli 2012-04-04 17:46:41