通过脚本替换文本行

时间:2011-12-29 10:38:50

标签: linux bash sed

我正在玩一个脚本,该脚本使用存储在变量中的文件替换文本行来更新文件。在尝试了很多东西后,我猜测问题是插入了文本,它可能使用了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 个答案:

答案 0 :(得分:2)

请注意sed可以将任何字符作为分隔符,/只是常规字符。如果您可以保证您的密钥没有空格,您可以尝试:

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

答案 1 :(得分: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's sub函数中使用该变量。

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