Relendo sua pergunta, acho que você está perdendo a opção -i para sed . Essa é a opção que torna sed editar o arquivo em vez de imprimir os resultados na saída padrão.
Note que é uma boa idéia testar seu comando sed antes usando a opção -i , já que não há comando "desfazer" se você errar.
Portanto, por exemplo, se você executar sed 's/old/new/' myfile , verá o conteúdo de myfile impresso em seu terminal com a primeira instância de old em cada linha substituída por new . Se você executar sed -i 's/old/new/' myfile , não verá nada impresso - myfile será (irrevogavelmente) editado no lugar.
Você também pode usar, por exemplo, -i.bak em vez de -i , o que fará com que o arquivo original seja salvo como myfile.bak e o arquivo editado como myfile . (Você pode definir qualquer extensão que quiser em vez de .bak e não precisa começar com um ponto, mas .bak é convencional para usar com esse propósito.)
As citações em torno de seu nome de arquivo contendo espaço são um problema separado e a resposta é simples - use aspas duplas para obter uma expansão de variáveis sem a divisão de palavras. Então, se você tem uma variável filenamevariable="My file name which contains spaces" , você precisa se referir a ela assim: sed 's/old/new/' "$filenamevariable"
Algumas outras leituras recomendadas: