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

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

Re: [shell-script] Comparando registros.


From: Julio C. Neves
Subject: Re: [shell-script] Comparando registros.
Date: Sun, 26 Feb 2012 15:19:03 -0300

Se não conseguir implementar a dica do Alysson (de juntar tudo em uma
linha), outra coisa que vc poderia fazer seria:

saida do comm | xargs -i grep -B2 {} arquivo

Por falar em xargs, para juntar cada 3 linhas em uma (proposta do Alisson),
faça:

cat arquivo | xargs -L3.
Abcs,
Julio
*Já foi lançado "Bombando o
Shell<http://www.brasport.com.br/index.php?dispatch=products.view&product_id=666>
". *
*Show **de interfaces gráficas sob Shell!*
*
*



Em 25 de fevereiro de 2012 20:44, Rodrigo Boechat <
address@hidden> escreveu:

> **
>
>
> Júlio, boa noite!
> Obrigado pela resposta. Eu pensei nisso. Na verdade foi a primeira coisa
> que imaginei.
> Mas caí num caso que não atendeu, ou que meu conhecimento limitado não
> soube solucionar.
> O "comm" compara linha por linha e mostra a linha diferente.
>
> O problema é o seguinte, digamos que o registro no padrão esteja assim:
> [NOME\DA\CHAVE\00]
> "Atributo00"=dword:valor00
> "Atributo01"=dword:valor01
>
> Já no usado, tenho o seguinte:
> [NOME\DA\CHAVE\00]
> "Atributo00"=dword:VALOR10
> "Atributo01"=dword:valor01
>
> O registro "[NOME\DA\CHAVE\00]" é diferente entre o padrão e o usado,
> mas eu receberia apenas '"Atributo00"=dword:VALOR10' de retorno.
> A avaliação que preciso realizar, necessita do registro completo. Nesse
> caso, preciso do retorno:
>
> [NOME\DA\CHAVE\00]
> "Atributo00"=dword:VALOR10
> "Atributo01"=dword:valor01
>
> Como meu conhecimento ainda é limitado, você saberia resolver o caso sem
> usar arrays?
>
> - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> -- -- -- -- -- -- -- -
> Fernando, boa noite!
> Obrigado pela resposta.
>
> Eu descobri isso tentando. Não entendi porque o shell não torna um
> elemento de array em array; matriz.
> mas já que a coisa é assim, eu pesquisei e já até tinha achado
> explicações sobre arrays associativos:
>
>
> http://www.dicas-l.com.br/cantinhodoshell/cantinhodoshell_20100120.php#.T0lbjl-oOCg
>
> Já conheço o meio de trabalhar com esse tipo de array, mas o que não
> consegui foi justamente, separar o registro e obter seus atributos em
> uma única linha.
>
> Aproveitando o exemplo que dei para o Júlio, tentarei explicar melhor.
> Registro padrão:
>
> [NOME\DA\CHAVE\00]
> "Atributo00"=dword:valor00
> "Atributo01"=dword:valor01
>
> chave='NOME\DA\CHAVE\00'
> atributo="\"Atributo00\"=dword:valor00\n\"Atributo01\"=dword:valor01"
> registroPadrao[$chave]=$atributo
>
> Eu não preciso, neste instante, saber especificamente o que está
> diferente na chave.
> Preciso apenas obter as chaves que possuem diferenças entre si.
>
> Assim fica super simples comparar as chaves do padrão com o usado, pois
> ambos possuirão os mesmos nomes de chaves.
> Eu faria algo assim:
>
> registroUsado[$chave] É IGUAL A registroPadrão[$chave]
>
> Se for diferente:
> echo $chave >> arquivoDeSaida.txt
> echo $atributos >> arquivoDeSaida.txt
>
> Meu problema é separar as chaves e colocar todos seus atributos como um
> único valor no elemento correto do array associativo.
> Tentei vários SEDs na busca pela resposta, mas só tive retorno toscos...
> =/
>
> Grato,
> Rodrigo Boechat
>
> Em 25-02-2012 18:05, Julio C. Neves escreveu:
> > Será que com o uso do diff ou do comm vc não resolve essa trapalhada em
> uma
> > linha somente?
> >
> > Abcs,
> > Julio
> > *Já foi lançado "Bombando o
> > Shell<
> http://www.brasport.com.br/index.php?dispatch=products.view&product_id=666
> >
> > ". *
> > *Show **de interfaces gráficas sob Shell!*
> > *
> > *
> >
> >
> >
> > Em 25 de fevereiro de 2012 04:05, Rodrigo Boechat<
> > address@hidden> escreveu:
> >
> >> **
> >>
> >>
> >> Pessoal, boa madrugada.
> >>
> >> Estou batendo cabeça com a seguinte situação:
> >> Tenho um arquivo de backup de registro do windows e preciso analisá-lo
> >> contra um registro "padrão" para verificar a diferença entre os dois.
> >>
> >> O que preciso e não estou conseguindo fazer é o seguinte: Pretendo criar
> >> um array "dicionário" com os nomes das chaves do registro e atribuir
> >> como valor todos os atributos das chaves em uma única linha.
> >>
> >> - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
> >> Exemplo de registro:
> >> [HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\MultifunctionAdapter\1]
> >> # REGISTRO
> >> "Component
> >> Information"=hex:00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,ff #
> ATRIBUTO
> >> "Identifier"="PCI"# ATRIBUTO
> >> "Configuration
> >> Data"=hex(9):05,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,05,\#
> ATRIBUTO
> >> 00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,02,10,01,01# ATRIBUTO
> >>
> >> [HKEY_LOCAL_MACHINE\HARDWARE\ACPI\FACS]# REGISTRO
> >>
> "00000000"=hex:46,41,43,53,40,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\#
> >>
> >> ATRIBUTO
> >>
> >>
> 00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,\#
> >>
> >> ATRIBUTO
> >> 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00# ATRIBUTO
> >>
> >> [HKEY_LOCAL_MACHINE\HARDWARE\ACPI\FADT]# REGISTRO
> >> # ATRIBUTO
> >> [HKEY_LOCAL_MACHINE\HARDWARE\ACPI\FADT\VBOX__]# REGISTRO
> >> # ATRIBUTO
> >>
> >> - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
> >> Exemplo de resultado esperado:
> >> registros[NOME\COMPLETO\DO\REGISTRO]=TODAS AS LINHAS DE ATRIBUTOS
> >> AGRUPADAS NUMA SÓ, INCLUINDO AS LINHAS EM BRANCO.
> >>
> >> - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
> >> Ficou fácil de compreender?
> >>
> >> Eu pretendo carregar dois arrays, um com o registro padrão e outro com o
> >> "usado" para passar para um txt tudo que estiver diferente do padrão ou
> >> não existir no padrão.
> >> Acredito que eu consiga com um while, mas nem consegui criar os arrays
> >> ainda.
> >>
> >> Bom, eu tentei seguir a ideia de um SED sinistro que o Robson Alexandre
> >> passou:
> >>
> >> for cmd in INSERT SELECT DELETE UPDATE
> >> do
> >> sed -n "/${cmd}/{:a;/;/! {N;ba};s/\n/ /g;p}" arq.txt> "${cmd}.txt"
> >> done
> >>
> >> Não tive sucesso, embora eu já consiga compreender a estrutura.
> >>
> >> Alguém poderia me ajudar?
> >>
> >> Grato,
> >> Rodrigo Boechat
> >>
> >> [As partes desta mensagem que não continham texto foram removidas]
> >>
> >>
> >>
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
> >
> > ----------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação,
> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> > ----------------------------------------------------------
> > Sair da lista: address@hidden
> > ----------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> > ----------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> > Links do Yahoo! Grupos
> >
> >
> >
>
> [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]