[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] como alterar linha de arquivo
From: |
Eliphas Levy Theodoro |
Subject: |
Re: [shell-script] como alterar linha de arquivo |
Date: |
Wed, 30 Mar 2005 18:37:57 -0300 (BRT) |
Alain, @ 17:23:
> Oi Luis, eu também tenho um problema em espera como esse. Na verdade
> arquivos como o smb.conf representam um problema um pouco mais
> complicado: Existem partes separadas por [colchetes], dentro desta parte
> é que tem que ser achar a linha, testando o que está *antes* do '='.
> Exemplo:
>
> # Diretorio para instalacao
> [install]
> path = /home/install
> read only = yes
> write list = alain,root
> # Diretorio do Administrativo
> [admin]
> path = /home/admin
>
> Agora suponha que eu queira mudar dentro de "[install]" a linha "path"
> para "/install". Ou a linha pode até não exitir e tem que ser criada
> antes da próxima linha com "[" ...
Complicado isso. Precisa ser mesmo em shell script?
(eliphas tenta entrar em um estado criativo)
#!/bin/sh
cp smb.conf smb.conf.bkp
SecaoAtual=""
SecaoQueEuQuero="[install]"
while read line; do
if echo "$line" | grep -q "^[[].*]"; then
SecaoAtual="$line"
elif [ "$SecaoAtual" == "$SecaoQueEuQuero" ]; then
if echo "$line" | grep -q "^path ="; then
$line = "path = /install"
fi
fi
echo "$line"
done < smb.conf.bkp > smb.conf
Feio, mas deve servir (NÃO TESTEI! use em um arquivo temporário antes
pra ver se serve.)
Se você está tentando fazer uma interface, dá uma olhada no SWAT ou no
webmin (módulo em perl). Vai ficar bem mais fácil seu trabalho.
--
Eliphas
> Luis Tiani escreveu:
>> Tente algo do tipo:
>>
>> $ sed -i 's/<texto_procurado>/<texto_alterado>/g' /etc/smb.conf
>>
>> On Tue, 29 Mar 2005 21:19:30 -0300,
>> Ricardo Paiva <address@hidden> wrote:
>>
>>> Pessoal tem como editar uma linha de um arquivo tipo smb.conf,
>>> entrar no arquivo pesquisar uma determinada linha e substituí-la
>>> por outra que tenha no script ???
[As partes desta mensagem que não continham texto foram removidas]