este é realmente um comentário sobre a resposta de Insyte, mas não posso formatá-lo de forma legível como um comentário. mais isso é muito longo para um comentário:)
sed -e 's/^[[:space:]]\+\(#\|\$\)/#/' apache.conf | grep -v '^#' | uniq
usando o sed, isso eliminará os espaços em branco antes dos comentários de linha completa e antes de todos os marcadores de fim de linha. canalizar através do uniq removerá todas as linhas vazias consecutivas, exceto a primeira linha vazia (isto é, deixando uma linha em branco entre os 'parágrafos'). OMI, isso torna mais legível.
usar o uniq aqui tem o pequeno risco de que quaisquer outras linhas duplicadas consecutivas sejam excluídas, mas isso não é um problema na prática.
também, para responder à sua pergunta sobre descascar # # comentários simples, mas não ############################################################################# . '#:', por exemplo. então use algo como:
sed -e 's/^[[:space:]]\+\(#\|\$\)/#/' apache.conf | egrep -v '^#[^:]|#$' | uniq