Comando Sed que funciona no MacOS (pelo menos, no OS 10) e no Unix (ou seja, não requer gnu sed como o de Gilles (atualmente aceito)):
sed -e '/CLIENTSCRIPT="foo"/a\'$'\n''CLIENTSCRIPT2="hello"' file
Isso funciona no bash e talvez em outros shells que também conhecem o estilo de cotação de avaliação $ '\ n'. Tudo pode estar em uma linha e funcionar em comandos / POSIX sed mais antigos. Se houver várias linhas correspondentes ao CLIENTSCRIPT = "foo" (ou seu equivalente) e você desejar adicionar apenas a linha extra na primeira vez, poderá refazê-la da seguinte maneira:
sed -e '/^ *CLIENTSCRIPT="foo"/b ins' -e b -e ':ins' -e 'a\'$'\n''CLIENTSCRIPT2="hello"' -e ': done' -e 'n;b done' file
(isso cria um loop após o código de inserção de linha que apenas percorre o restante do arquivo, nunca voltando ao primeiro comando sed novamente).
Você pode notar que adicionei um '^ *' ao padrão correspondente, caso essa linha apareça em um comentário, digamos, ou seja recuada. Não é 100% perfeito, mas cobre algumas outras situações que provavelmente serão comuns. Ajuste conforme necessário ...
Essas duas soluções também contornam o problema (para a solução genérica de adicionar uma linha) de que, se a nova linha inserida contiver barras invertidas ou e comercial sem escape, elas serão interpretadas pelo sed e provavelmente não sairão da mesma forma, como \n
são - por exemplo. \0
seria a primeira linha correspondente. Especialmente útil se você estiver adicionando uma linha que vem de uma variável em que você teria que escapar de tudo primeiro usando $ {var //} antes ou outra instrução sed etc.
Essa solução é um pouco menos confusa nos scripts (que citar e \ n não é fácil de ler), quando você não deseja colocar o texto de substituição para o comando a no início de uma linha, digamos, em uma função com linhas recuadas. Eu aproveitei que $ '\ n' é avaliado como uma nova linha pelo shell, não está nos valores regulares de aspas simples '\ n'.
Está ficando longo o suficiente, mas acho que o perl / awk pode ganhar devido a ser mais legível.