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

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

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

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

此外,您需要恰好该行,这也是一种隔阂。你应该把它加在最后,或者类似的东西。

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

相关内容

最新更新