如果不存在,则添加行

phi*_*dah 1 sed

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

我需要添加以下文字:

extension=solr.so
Run Code Online (Sandbox Code Playgroud)

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

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

我有以下命令可以正常工作,除非再次运行脚本再次添加行:

sed '941i\
extension=solr.so' /etc/php5/apache2/php.ini > /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

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

Die*_*lla 11

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

grep -q -e 'extension=solr.so' file || sed '...'
Run Code Online (Sandbox Code Playgroud)

而且,您需要完全相同的线路.你应该在最后添加它,或类似的东西.

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