2011-12-29 130 views
0

我玩弄一個更新文件替換文本行與一個存儲在一個變量的腳本。在嘗試了大量的東西之後,我猜測問題是插入的文本,它可能使用sed不喜歡的字符。的我如何使用命令,什麼替換文本看起來像下面是一個例子:替換文本行通過腳本

sed 's/^define.*$/'define('AUTH_KEY',   'r*v8]Wic;@Y4{|0EQ9Z?~W,-P}k:d{k)ylAFHm-d(tY6v?U,5{hn].e9eH%/Xmdy');'/' change.html 

我讀過別的地方就在這裏,你需要逃避的人物,但無法得到它的工作最佳答案我發現這裏:Escape a string for a sed replace pattern

任何幫助,或者在正確的方向指針是極大的讚賞,謝謝! :)

回答

2

請注意sed可以採取任何字符作爲分隔符,並/只是傳統的。如果你能保證你的關鍵是自由的空間,你可以嘗試:

sed 's ^define.*$ &(yourkey) ' 
+0

我使用更新後的代碼時,得到一個錯誤,它說:「附近意外的標記語法錯誤('」也許我輸入了錯誤代碼是:?'sed的‘s/^ *定義$&’。 (定義( 'AUTH_KEY','R * V8] WIC; @ Y4 {| 0EQ9Z〜W,-P 2} K:d {K)ylAFHm-d(tY6v U,5 {HN] .e9eH%/ Xmdy? );)'/「change.html' – Smitty 2011-12-29 11:07:52

+0

@Alen:在這個職位看起來更精確和」令牌是專門爲外殼,你必須解決它。 – thiton 2011-12-29 11:15:10

0

嘗試是這樣的 -

將您的替換文本到一個變量 -

[jaypal:~/Temp] abc="'define('AUTH_KEY',   'r*v8]Wic;@Y4{|0EQ9Z?~W,-P}k:d{k)ylAFHm-d(tY6v?U,5{hn].e9eH%/Xmdy');'" 

使用該變量在awk'ssub功能。

[jaypal:~/Temp] awk -v rep="$abc" '{sub(/^define.*$/,rep,$0); print}' change.html