O problema aqui é que você está lendo o log do Apache e gravando nele ao mesmo tempo. O que quer que você tenha adicionado ao log também retornará ao pipeline através da chamada cat
(nenhum jogo de palavras intencional :)). Isso cria um ciclo de feedback positivo desagradável que continuará funcionando até que seu sistema de arquivos seja preenchido. A resposta para esta pergunta pode ser interessante para você sobre o porquê isso acontece.
Como você deve fazer isso? Uma solução ingênua seria modificar o arquivo no lugar da seguinte forma:
for item in ${!values[@]};do
sed -i "..." "$apacheLog" #cat isn't needed here
done
e não canalize a saída em qualquer lugar: o próprio script modificará o arquivo in situ . Veja também a resposta de terdon sobre como fazer a chamada sed
apenas uma vez (sem loop) para melhorar a eficiência.
Por acaso, o que você está fazendo nem limpa os logs: ele anexa as linhas higienizadas de volta ao arquivo de log (ainda contaminado).