Eu tenho um script bash para instalar um servidor web no meu servidor Ubuntu.
Eu gostaria, no /etc/apache2/apache2.conf, de substituir
%pre%
por
%pre%
Se eu fizer
%pre%
está funcionando, mas eu gostaria de incluir a linha em branco e o # após o #ServerRoot para evitar adicionar duas vezes ServerName se o script for executado duas vezes.
Eu tentei
%pre%
Mas não está funcionando.
______ azszpr491178 ___
Que tal
- pesquise %code%
- se encontrado, lido e anexado a próxima linha no espaço padrão do sed
- pesquise o espaço padrão anexado por uma linha vazia após a nova linha e substitua %code% por essa
Juntando isso,
%pre%
Caso a linha 'vazia' contenha espaços em branco, você pode modificá-la para
%pre%
______ azszpr491157 ___
Por fim, a verificação em dobro de %code% funcionando em %code% com ajuda deste . Pouco de boca cheia:
%pre%
E um awk que faz o mesmo (mais longo, mas mais fácil de entender o IMO). A lógica e %code% são explicados na última seção.
%pre%
Edit: O %code% não é tão difícil quanto eu pensava que era. Você só quer combinar e anexar (o comando %code% ); você não precisa substituir. Eu testei o seguinte como trabalhando:
%pre%
Você pode ser mais específico com o seu jogo se quiser e deixarei o %code% abaixo para a posteridade.
A edição é bastante trivial com %code% , mas para escrever novamente no mesmo arquivo, precisamos de um arquivo intermediário temporário ou %code% (do %code% package). Eu vou mostrar os dois métodos.
%pre%
Ou
%pre%
O %code% está imprimindo todas as linhas encontradas, mas no caso de uma correspondência para %code% , a linha ServerName é gravada. Eu acho esse tipo de processamento muito mais fácil de ler do que "trocar" arbitrariamente com o sed.
______ azszpr491205 ___
Outra forma (obrigado muru) mas um pouco fora de contexto porque não usa sed:
Para o Ubuntu 14.04 :
Crie um arquivo fqdn.conf em / etc / apache2 / conf-available / contendo
%pre%
Crie um link simbólico em / etc / apache2 / conf-enabled /
%pre%
___