Geralmente, você precisa de uma boa expressão regular que corresponda às suas necessidades. sed
é uma boa ferramenta para usar, perl
é outra. A única razão pela qual estou preferindo perl
é que conheço melhor sua sintaxe de expressão regular. A seguinte linha deve fazer o que você quer:
perl -0777 -i.bak -pe 's/(body {.*?background-color.*?)#.{6}/#000000/si;' ./style.css
-0777
significa dividir em nada, portanto, sorve todo o arquivo (em vez de linha por linha, o padrão para -p)
-i.bak
significa alterar os arquivos no lugar, deixando o original com extensão .bak (o padrão para -p é apenas imprimir)
-p
significa passar linha por linha (exceto nós estamos sugando) para o código passado (veja -e)
-e
espera que o código seja executado.
Explicar a expressão regular está além do escopo da minha resposta, mas há muitos tutoriais por aí como este por exemplo.
Certifique-se de verificar os resultados, pois posso facilmente imaginar arquivos css que causariam problemas com essa expressão. Por exemplo, ter seletores que contenham a palavra corpo podem causar problemas ...