2012-07-16 44 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

相關問題