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: Rodrigo Boechat
Subject: Re: [shell-script] Comparando registros.
Date: Sun, 26 Feb 2012 12:31:20 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.2) Gecko/20120217 Thunderbird/10.0.2

É verdade...
Não tinha pensado nisso.

Obrigado Alysson.
Vou trabalhar nesse sentido.
:)

Em 26-02-2012 01:59, Alysson Gonçalves de Azevedo escreveu:
> Não é mais fácil agrupar
> [NOME\DA\CHAVE\00]
> "Atributo00"=dword:VALOR10
> "Atributo01"=dword:valor01
>
> em uma única linha
> [NOME\DA\CHAVE\00];"Atributo00"=dword:VALOR10;"Atributo01"=dword:valor01
>
> fazer o diff e depois, se necessário, desmontar em várias linhas de novo...
> do que comparar linha a linha via arrays e etc...?
> dá pra fazer o que eu sugeri com awk/sed
>
>
> Alysson Gonçalves de Azevedo
> (11) 8491-7730
>
>
>
>
> 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]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> 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]



reply via email to

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