Como dividir uma string hex longa

0

Eu tenho uma longa string hexadecimal 00121eafc5800020 ... etc.

Existe uma maneira fácil de dividir isso com um espaço por byte codificado por hex 00 12 1e af c5 80 00 20 no vim (ou outra ferramenta de fácil acesso)

    
por nos 21.10.2011 / 12:55

4 respostas

5
$ sed 's/\(..\)/ /g' <<< '1234567890'
12 34 56 78 90 
    
por 21.10.2011 / 13:04
0

Tente esta sequência de teclas (desde o início do número):      q1lxPpr lq@1@1@1@1@1@1@1@1 (etc. ou digamos, 20 @ 1)

    
por 21.10.2011 / 13:54
0

Em vim , você pode usar :s/\([0-9a-f][0-9a-f]\)/ /g para fazer o que quiser. Para testar isso, você pode usar o seguinte comando:

dd bs=512 if=/dev/urandom count=2 2>/dev/null | xxd -p | tr -d '\n' | vim -

Em seguida, em vim , use :s/\([0-9a-f][0-9a-f]\)/ /g para adicionar um espaço após cada par de caracteres hexadecimais. Aqui está um pequeno exemplo:

$ dd bs=32 if=/dev/urandom count=1 2>/dev/null | xxd -p | tr -d '\n' | vim -
6aad5f800a739fadbc3e2312230daeca8055491577b0e0d75a37bb3777f0a3e0
:s/\([0-9a-f][0-9a-f]\)/ /g
6a ad 5f 80 0a 73 9f ad bc 3e 23 12 23 0d ae ca 80 55 49 15 77 b0 e0 d7 5a 37 bb 37 77 f0 a3 e0 
    
por 21.10.2011 / 13:59
0
:%s/\x\x/& /g

é o suficiente.

Se você quiser cortar várias linhas, você também pode aplicar esse :substitute primeiro.

:%s/\x\{16}/&\r/g

Ou se você preferir um one-liner (não tenho certeza de que essa é uma solução melhor aqui)

:%s/\x\{16}/\=substitute(submatch(0), '\x\x', '& ', 'g')."\n"/g
    
por 21.10.2011 / 14:34

Tags