2017-02-19 80 views
-1

假设test.txt包含:编辑配置文件的sed

define('DB_NAME', 'wordpress'); 
/** MySQL database username */ 
define('DB_USER', 'root'); 
/** MySQL database password */ 
define('DB_PASSWORD', 'pass'); 

我想编辑使用bash脚本上面的文件。我会运行脚本,并用'foobar'替换'wordpress'。下面是我有迄今:

#!/usr/bin/bash 

# Database config 
echo -e "\ndatabase name: \c" 
read DB_NAME 

sed -i "s/^\define\('DB_NAME',\s*'(.*\$)'\);/\1$DB_NAME/" "C:/Apache24/htdocs/test.txt" 

运行脚本和test.txt确实得到修正,虽然不是一个办法,我想要的目的。事实上,文件中没有任何变化。

对于上述常量,与sed一起使用的搜索和替换正确的正则表达式是什么?

+0

这个问题并没有表现出任何的研究工作。 – melpomene

+0

我大部分时间都在这里度过了吗? – cookie

+0

你的问题的形式是“*这是一些随机代码,它不工作大声笑*”。您可以通过分别查看每个部分来改进它,解释您的想法(可能包括指向手册的链接)。此时,您可以验证每个部分以确保您的理解符合现实。然后你可以自己调试它,并可以提出一个更好的问题。 – melpomene

回答

2

随着GNU sed的:

sed -i "s/define('DB_NAME', '.*');/define('DB_NAME', 'foobar');/" file 
+0

因此,我可以很容易地用一个变量'“$ FOOBAR”替换''foobar'''说。 Brill和感谢 – cookie

+0

有趣的是,期间和astrix都工作包裹在双重,然后在这里单引号:)。 – cookie