Seja mais específico na sua expressão regular:
sed '/path *= *$/ s#$#/data#' file.ini
A expressão /path *= *$/
corresponderá a qualquer linha com path
seguido por =
(possivelmente cercada por espaços), mas com nada além de espaços depois disso e o final da linha. A substituição real colocará /data
no final da linha.
Isso também funcionaria:
sed "s#path *= *$#& /data#" file.ini
Se você precisar ser mais específico com a seção do arquivo INI que deseja modificar, expanda o intervalo do comando s
:
sed '/\[homes\]/,/\[printers\]/ s#path *= *$#& /dev#' file.ini
Isso só aplicará a substituição à seção [homes]
.
Redirecionar para um novo arquivo ou usar -i
da maneira apropriada com qualquer uma das soluções acima.