2012-07-16 58 views
0

我有一个回报率项目的config/application.rb中文件下面几行:如何更改RoR配置文件中的文本?

[other lines that i omitted here] 
config.app_type= :rewards # :classic/:rewards 
config.app_prefix= '' # '$ ' for :classic/'' for :rewards 
config.app_suffix= ' pts' # ' MXN', ' USD' for :classic/' pts' for :rewards 

我想改变使用SED脚本的文本,这样:

[other lines that i omitted here] 
config.app_type= :classiC# :classic/:rewards 
config.app_prefix= '$ ' # '$ ' for :classic/'' for :rewards 
config.app_suffix= ' USD' # ' MXN', ' USD' for :classic/' pts' for :rewards 

如何我可以用sed来做这个吗?,我仍然没有得到它与正则表达式和SED尚未...:S

回答

1

这应该工作。使用sed命令的文件可避免转义引号的混乱。

内容script.sed

s/^\(*config\.app_type= *:\)rewards/\1classic/ 
s/^\(*config\.app_prefix= *\)''/\1'$ '/ 
s/^\(*config\.app_suffix= *\)' pts'/\1' USD'/ 

运行它想:

sed -f script.sed infile 

有了以下的输出:

[other lines that i omitted here] 
config.app_type= :classiC# :classic/:rewards 
config.app_prefix= '' # '$ ' for :classic/'' for :rewards 
config.app_suffix= ' pts' # ' MXN', ' USD' for :classic/' pts' for :rewards 
+0

嗯....对于我的具体情况,我只能用自定义bash文件...使用转义引号怎么样? – 2012-07-16 19:32:49

+0

@ianenri:你的意思是什么*自定义bash文件*?你可以直接从命令行使用双引号运行它,但是你必须更加小心可变插值(可能不在这里,但是在更复杂的命令中),如:'sed -e“s/^ \(* config \ .app_type = *:\)奖励/ \ 1classic /; ...“infile” – Birei 2012-07-16 19:43:56