Se os textos novos e antigos tiverem o mesmo comprimento, você poderá procurar no arquivo e gravar apenas os bytes alterados, em vez de copiar o arquivo inteiro. Caso contrário, você ficará preso à movimentação de muitos dados.
Nota: isso é complicado e envolve escrever código personalizado.
Consulte a página de manual do fseek, se você estiver trabalhando em C ou C ++, ou seus wrappers de idiomas favoritos para as chamadas de sistema de busca e gravação.
Se você insistir em usar apenas a linha de comando e conseguir os desvios de bytes do texto, poderá escrever o texto de substituição no lugar com comandos "dd" escritos com cuidado.