2011-12-29 95 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