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: Fernando Mercês
Subject: Re: [shell-script] Comparando registros.
Date: Sat, 25 Feb 2012 11:49:02 -0200

Rodrigo,

O bash 4 tem arrays associativos, que podem te ajudar. O ideal neste caso,
a meu ver, seria criar um array de dois elementos, sendo o primeiro a chave
e o segundo, um array de atributos. No entanto, o bash não suporta arrays
multidimensionais (vide man).

Uma saída é criar um array associativo onde um elemento chamado "chave"
contém a chave e os outros elementos indexados contém os valores. O que
acha?

Ficaria algo assim:

declare -A reg

reg[chave]='[HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\MultifunctionAdapter\1]'
reg[0]='Component
Information=hex:00,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,ff'
reg[1]='Identifier=PCI'
reg[2]='Configuration
Data=hex(9):05,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,05'

echo ${reg[chave]} # para acessar a chave
echo ${reg[0]} # para acessar os atributos

Abraço!

Att,

Fernando Mercês
Linux Registered User #432779
www.mentebinaria.com.br
softwarelivre-rj.org
@MenteBinaria
------------------------------------
II Hack'n Rio - 23 e 24/11
                 hacknrio.org
------------------------------------


2012/2/25 Rodrigo Boechat <address@hidden>

> **
>
>
> 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]



reply via email to

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