Opa,

Alexandre, se vc não faz nenhuma verificação se o arquivo gerado está
ok, não precisa criar um arquivo temporario, copiar e remover, basta
usar a opção -i do sed:

$ sed '/register_globals/s/On/Off/' -i php.ini

Usei uma notação mais 'simples' do sed retirada do sed1liner

http://aurelio.net/sed/1liners-ptBR.txt

nesta dica:

OTIMIZANDO PARA MAIOR VELOCIDADE: Se a velocidade de execução precisa
aumentar (em virtude de grandes arquivos de entrada ou de processadores
e discos rígidos lentos), a substituição será executada mais rapidamente
se a expressão de "procura" é especificada antes da instrução
"s/.../.../". Assim:

   sed 's/foo/bar/g' arquivo         # comando de substituição padrão
   sed '/foo/ s/foo/bar/g' arquivo   # executa de forma mais rápida
   sed '/foo/ s//bar/g' arquivo      # sintaxe mais sucinta

Abraços ;-)

On 11/26/06, Alexandre Bueno Chaves <[EMAIL PROTECTED]> wrote:
>
> Eu faço da seguinte forma:
>
>  cat php.ini | sed s/'register_globals = On'/'register_globals = Off'/ >
>  php2.ini; cp php2.ini php.ini; rm -f php2.ini
>
>  []'s
>
>
>  On 11/25/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>  >
>  >   Olá pessoal,
>  >
>  > Sou iniciante ainda em shell, e principalmente no SED.
>  >
>  > Estou precisando ler um arquivo (no caso o php.ini, do Apache) e mudar
>  > o register_globals de On para Off
>  >
>  > No arquivo , a frase aparece em uma unica linha, da seguinte forma:
>  >
>  > ----------------------------------------
>  > xxxxxxxxxx
>  > xxxxxxxxxxxxx
>  > register_globals = On
>  > xxxxxxxxxxx
>  > xxxxxxxxxxxx
>  > ----------------------------------
>  >
>  > e precisaria muito que ficasse assim
>  >
>  > ----------------------------------------
>  > xxxxxxxxxx
>  > xxxxxxxxxxxxx
>  > register_globals = Off
>  > xxxxxxxxxxx
>  > xxxxxxxxxxxx
>  > ----------------------------------
>  >
>  > pesquisando na Net, eu cheguei a tentar o seguinte código:
>  >
>  > sed -e 's/register_globals = On/register_globals = Off/Ig' /var/lib/mysql
>  >
>  > Ou seja, a ideia seria achar a ocorrencia exata "register_globals = On"
>  > e trocar
>  > somente esta expressão por "register_globals = Off". Não dá pra so
>  > trocar "On" por "Off" genericamente no arquivo, porque tem varias
>  > outras ocorrências On/Off no arquivo que não podem ser alteradas.
>  >
>  > Já pesquisei na Net a tarde inteira, mas a maioria dos exemplos se refere
>  > a
>  > troca de palavras, não consegui achar nenhum que tivesse espaço no meio,
>  > ou
>  > trocasse uma pequena frase por outra.
>  >
>  > Agradeço desde já qualquer ajuda que o pessoal possa me dar, e de repente,
>  > esse comando se colocado em um script, pode até servir à comunidade,
>  > porque pode agilizar um pouco a tarefa
>  > de quem configura vários servidores com o apache,
>  > e precisa desabilitar o register_globals.
>  >
>  > Um abraço
>  >
>  > Abdala
>  >
>  >
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>                   



-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer

Responder a