[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] como alterar linha de arquivo
From: |
Fábio Batista |
Subject: |
Re: [shell-script] como alterar linha de arquivo |
Date: |
Wed, 30 Mar 2005 20:51:39 -0300 |
Iniciei um pequeno editor de inis...
O chato é que ele não insere uma chave, se a chave não existir.
Se alguém quiser se propor a implementar isso...
[fabio@elefante ini]$ cat exemplo.ini
[secao]
parametro=1
[secao2]
parametro=2
[outra]
x=y
z=z
a=a
[fabio@elefante ini]$ cat ini.sh
#!/bin/bash
# vim:ts=2
SECAO="$1"
shift
PARAM="$1"
shift
if [ -z "$SECAO" ];
then
echo "Você deve fornecer o nome da seção"
exit 1
fi
if [ -z "$PARAM" ];
then
echo "Você deve fornecer o nome do parâmetro"
fi
sed -r "/$SECAO/,/^\[/ s/^($PARAM=).*$/\1$*/"
[fabio@elefante ini]$ ./ini.sh secao2 parametro valor do parametro < exemplo.ini
[secao]
parametro=1
[secao2]
parametro=valor do parametro
[outra]
x=y
z=z
a=a
--
Fábio David Batista
address@hidden
http://nerd-o-matic.blogspot.com
On Wed, 30 Mar 2005 17:23:42 -0300, Alain <address@hidden> wrote:
> 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 "[" ...
>
> Aceitamos sugestões...
>
> grato,
> Alain
>
>
> 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 ???
> >
> >
>