2011-06-05 325 views
1

我需要通過sed(或類似)在php.ini配置文件中進行更改。如果不存在sed添加行

我需要添加以下文字:

extension=solr.so 

線已被添加爲配置文件中的行號941。但是,如果文件已經存在,則不應再次添加。

我想有兩種方法:1)用文本替換941行,或者2)搜索文本,如果不匹配,則將其添加到行941。

我有以下命令工作正常,但如果腳本被再次運行線再次補充說:

sed '941i\ 
extension=solr.so' /etc/php5/apache2/php.ini > /etc/php5/apache2/php.ini 

我怎樣才能確保該命令不加行,如果它是已經在那了?

回答

11

最簡單的方法是使用grep之前測試,例如:

grep -q -e 'extension=solr.so' file || sed '...' 

而且,你需要該行正是疏遠。你應該在最後添加它,或者類似的東西。

另外,還要注意採取同樣的文件作爲輸入輸出從未應該做的。這會嚴重損壞文件。您應該使用-i sed參數進行就地編輯。

相關問題