如果不存在,则添加行

时间:2011-06-05 18:44:25

标签: sed

我需要通过sed(或类似的)在php.ini配置文件中进行更改。

我需要添加以下文字:

extension=solr.so

必须在配置文件中将该行添加为行号941。但是,如果文件已存在,则不应再次添加。

我猜有两种方法:1)用文本替换第941行,或者2)搜索文本,如果没有匹配则将其添加到第941行。

我有以下命令可以正常工作,但如果再次运行脚本则再次添加该行:

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

如果该命令已存在,我如何确保此命令不添加该行?

1 个答案:

答案 0 :(得分:11)

最简单的方法是在使用grep之前进行测试,例如:

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

此外,您需要完全该行。你应该在最后添加它,或类似的东西。

另请注意,应将输入输出永远的文件作为输入。这可能会严重损坏文件。您应该使用-i sed参数进行就地编辑。