shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Remover determinadas linhas do arquivo.


From: Robson Alexandre
Subject: Re: [shell-script] Remover determinadas linhas do arquivo.
Date: Mon, 2 Jul 2012 13:51:53 -0300

Não parceiro, só com esse sed vc resolve seu problema e de muitos outros
também
host=IP, MAC ou Hostname ou filename
sed "/{/{:a;/}/ ! {N;ba};/${host}/d}" dhcp.conf

exemplo

Com Hostname
$ host=h1766
$ sed "/{/{:a;/}/ ! {N;ba};/${host}/d}" dhcp.conf
dhcp.conf
host h1765 {
hardware ethernet 00:1A:66:81:49:E6;
fixed-address 10.2.3.94;
filename "r768.bin";
}
host h1767 {
hardware ethernet 00:0A:E6:D5:36:8C;
fixed-address 10.3.1.100;
}

Com IP
$ host=10.2.3.94
$ sed "/{/{:a;/}/ ! {N;ba};/${host}/d}" dhcp.conf
dhcp.conf
host h1766 {
hardware ethernet 00:50:FC:59:F2:0E;
fixed-address 10.3.1.10;
}
host h1767 {
hardware ethernet 00:0A:E6:D5:36:8C;
fixed-address 10.3.1.100;
}

E com
Mac-Address

$ host=00:0A:E6:D5:36:8C
$ sed "/{/{:a;/}/ ! {N;ba};/${host}/d}"
dhcp.conf

dhcp.conf

host h1765
{

hardware ethernet 00:1A:66:81:49:E6;
fixed-address
10.2.3.94;

filename
"r768.bin";

}

host h1766
{

hardware ethernet 00:50:FC:59:F2:0E;
fixed-address
10.3.1.10;

}



Sendo o arquivo esse
$ cat
dhcp.conf

dhcp.conf
host h1765 {
hardware ethernet 00:1A:66:81:49:E6;
fixed-address 10.2.3.94;
filename "r768.bin";
}
host h1766 {
hardware ethernet 00:50:FC:59:F2:0E;
fixed-address 10.3.1.10;
}
host h1767 {
hardware ethernet 00:0A:E6:D5:36:8C;
fixed-address 10.3.1.100;
}


Att
Robson Alexandre

Em 2 de julho de 2012 11:49, Karin Klayton Schiochet <address@hidden
> escreveu:

> **
>
>
> Opá, Cléoson,
>
> Era isso mesmo, não estava nem me ligando nas aspas simples que
> estava o comando sed, agora resolveu beleza.
>
> Ficou assim.
>
> sed -i "/host $host [{]/,/[}]/d" dhcp.conf
>
> Obrigado a ajuda de todos.
>
> Atenciosamente,
> Karin Klayton Schiochet
>
> Em 02-07-2012 11:30, Cléoson Barreto escreveu:
>
> >
> > Olá!
> >
> > Experimente fazer o sed com aspas duplas:
> >
> > sed -i "/host $host [{]/,/[}]/d" dhcp.conf
> >
> > []'s
> > Cléoson.
> >
> > Em 2 de julho de 2012 11:19, Karin Klayton Schiochet
> > <address@hidden <mailto:karinklayton%40gmail.com>
>
> > > escreveu:
> >
> > > **
> > >
> > >
> > > Robson,
> > >
> > > Essa sua solução resolve sim o problema. Eu estava querendo
> > > fazer tudo com apenas um sed, mas adicionando mais uma linha para
> > > reconhecer o host fica mas fácil de remover depois o que preciso. Agora
> > > tem um problema, o sed não esta aceitando entrar com variável no
> > comando.
> > > Ficou assim:
> > > host=$(grep -B2 -A2 "10.2.3.94;" dhcp.conf | grep "host" | cut
> > > -d" " -f2)
> > >
> > > sed -i '/host $host [{]/,/[}]/d' dhcp.conf
> > >
> > > Deveria remover a linha mas não esta fazendo porque o sed não
> > > esta reconhecendo/convertendo a variável $host creio eu.
> > >
> > > Obrigado pela ajuda.
> > >
> > > Em 02-07-2012 08:51, Robson Alexandre escreveu:
> > > >
> > > > Mas essa solução serve tanto para Ip, host mac, qq coisa q esteja
> > entre
> > > as
> > > > linhas das chaves {}
> > > > Testa aí o q te falei e diz se te atende.
> > > >
> > > > Atenciosamente
> > > > Robson Alexandre
> > > >
> > > > Enviado por Samsung Mobile
> > > > Em 01/07/2012 11:15, "Fredi Bieging" <address@hidden
> > <mailto:fredi.bieging%40gmail.com>
> > > > <mailto:fredi.bieging%40gmail.com>> escreveu:
> > > >
> > > > > Talvez seja o caso de você fazer um passo anterior para pegar o
> > > > host, dado
> > > > > um ip:
> > > > >
> > > > > host=$(grep -B 5 $IP dhcp.conf | grep host | cut -d ' ' -f2 |
> > tail -n
> > > 1)
> > > > >
> > > > >
> > > > > 2012/7/1 Karin Klayton Schiochet <address@hidden
> > <mailto:karinklayton%40gmail.com>
> > > > <mailto:karinklayton%40gmail.com>>
> > > > >
> > > > > > **
> > > > > >
> > > > > >
> > > > > > Olá Robson,
> > > > > >
> > > > > > Valeu pela dica, seria perfeito, porém, o problema é que eu não
> > > > > > tenho conhecimento do host que irei remover. Recebo apenas a
> > > > informação
> > > > > > do IP que devo remover e a partir dai tenho que remover do escopo
> > > > o host.
> > > > > >
> > > > > > Atenciosamente,
> > > > > > Karin Klayton Schiochet
> > > > > >
> > > > > > Em 30-06-2012 18:09, Robson Alexandre escreveu:
> > > > > >
> > > > > > >
> > > > > > > Prezado Karin,
> > > > > > >
> > > > > > > Tenta esse aqui para remover o host desejado
> > > > > > >
> > > > > > > host=h1766
> > > > > > > sed "/{/{:a;/}/ ! {N;ba};/${host}/d}" dhcp.conf
> > > > > > >
> > > > > > > colocando sua variável no exemplo acima usei o h1766
> > > > > > >
> > > > > > > att
> > > > > > >
> > > > > > > Robson Alexandre
> > > > > > >
> > > > > > > Em 30 de junho de 2012 15:52, Alysson Gonçalves de Azevedo <
> > > > > > > address@hidden <mailto:agalysson%40gmail.com>
> > <mailto:agalysson%40gmail.com>
> > > > <mailto:agalysson%40gmail.com>> escreveu:
> > > > > >
> > > > > > > > Sei que vão te dar respostas melhores, mas para trazer o
> > que você
> > > > > quer,
> > > > > > > > pode ser possível com um grep -v
> > > > > > > >
> > > > > > > > grep -v "$(sed 'H;/10.3.1.10\;/{g;N;s/^\n//p;};
> > > > > > > > x;s/.*\(\(\n[^\n]*\)\{2\}\)/\1/;x ;d' dhcp.conf)" dhcp.conf
> > > > > > > >
> > > > > > > >
> > > > > > > > Alysson Gonçalves de Azevedo
> > > > > > > > (11) 8491-7730
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Em 30 de junho de 2012 13:05, Karin Klayton Schiochet <
> > > > > > > > address@hidden <mailto:karinklayton%40gmail.com>
> > <mailto:karinklayton%40gmail.com>
> > > > <mailto:karinklayton%40gmail.com>> escreveu:
> > > > > >
> > > > > > > >
> > > > > > > >> **
> > > > > > > >>
> > > > > > > >>
> > > > > > > >> Prezados,
> > > > > > > >>
> > > > > > > >> Estou tendo problemas com um script e gostaria de pedir a
> > ajuda
> > > > > > > >> de vocês. Tenho um escopo dhcp e fiz um script para
> adicionar
> > > > hosts
> > > > > no
> > > > > > > >> dhcp. O problema é que recebo através de um sistema externo
> a
> > > > > > > informação
> > > > > > > >> para remover o IP do dhcp e não estou conseguindo formatar
> um
> > > > > comando
> > > > > > > >> para remover todos os campos necessários.
> > > > > > > >>
> > > > > > > >> Segue exemplo do escopo dhcp.
> > > > > > > >> dhcp.conf
> > > > > > > >> host h1765 {
> > > > > > > >> hardware ethernet 00:1A:66:81:49:E6;
> > > > > > > >> fixed-address 10.2.3.94;
> > > > > > > >> filename "r768.bin";
> > > > > > > >> }
> > > > > > > >> host h1766 {
> > > > > > > >> hardware ethernet 00:50:FC:59:F2:0E;
> > > > > > > >> fixed-address 10.3.1.10;
> > > > > > > >> }
> > > > > > > >> host h1767 {
> > > > > > > >> hardware ethernet 00:0A:E6:D5:36:8C;
> > > > > > > >> fixed-address 10.3.1.100;
> > > > > > > >> }
> > > > > > > >>
> > > > > > > >> Para cadastrar está tudo correto, todavia, para remover é
> que
> > > > > > > >> mora o problema. Recebo como informação um arquivo com
> apenas
> > > uma
> > > > > > linha
> > > > > > > >> "REM 10.3.1.10" como exemplo. A partir dai me baseado pelo
> IP
> > > > tenho
> > > > > > que
> > > > > > > >> remover esse host do dhcp e não estou conseguindo. Encontrei
> > > > > exemplos
> > > > > > > >> muito bom no site do Thobias "
> > > http://thobias.org/doc/sosed.html";
> > > > > que
> > > > > > > >> imprime as linhas que desejo, porém, gostaria do inverso e
> > > > não estou
> > > > > > > >> conseguindo.
> > > > > > > >>
> > > > > > > >> cat dhcp.conf | sed 'H;/10.3.1.10\;/{g;*N;*s/^\n//p;};
> > > > > > > >> x;s/.*\(\(\n[^\n]*\)\{2\}\)/\1/;x ;d'
> > > > > > > >> host h1766 {
> > > > > > > >> hardware ethernet 00:50:FC:59:F2:0E;
> > > > > > > >> fixed-address 10.3.1.10;
> > > > > > > >> }
> > > > > > > >>
> > > > > > > >> ou
> > > > > > > >> cat hdcp.conf | sed 'H;/10.2.3.94\;/{g;*N;N;*s/^\n//p;};
> > > > > > > >> x;s/.*\(\(\n[^\n]*\)\{2\}\)/\1/;x ;d'
> > > > > > > >> host h1765 {
> > > > > > > >> hardware ethernet 00:1A:66:81:49:E6;
> > > > > > > >> fixed-address 10.2.3.94;
> > > > > > > >> filename "r768.bin";
> > > > > > > >> }
> > > > > > > >>
> > > > > > > >> O problema é que eu queria o inverso, remover esta linha do
> > > > arquivo.
> > > > > > > >>
> > > > > > > >> Agradeço a atenção.
> > > > > > > >> Karin Klayton Schiochet
> > > > > > > >>
> > > > > > > [As partes desta mensagem que não continham texto foram
> > removidas]
> > > >
> > > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]