puxando strings para fora do arquivo misto de strings e binário

3

Estou tentando colocar meu arquivo de backup nokia em um formato vcard aceitável. Tem cadeias de vcard válidas que aparecem entre os dados binários. Por exemplo:

!@#JUNKCHARACTERS!@#!@BEGIN:VCARD
VERSION:2.1
N:Jimmy;;;;
TEL;VOICE:4445551212
END:VCARD!@#JUNKCHARACTERS!@#!@

Eu tenho trabalhado com um editor hexadecimal para encontrar e substituir, mas mesmo assim é tedioso. Posso usar o grep ou alguma outra ferramenta de linha de comando para extrair todas as strings entre BEGIN:VCARD e END:VCARD ?

    
por user394 16.07.2011 / 17:18

2 respostas

6

Sinto muito se estou sendo ingênuo, mas você não pode simplesmente:

strings binary-file > binary-strings-output.txt

E, em seguida, publicar o processo na saída das sequências? Ao longo das linhas de:

awk '/BEGIN:VCARD/,$NF ~ /END:VCARD/' binary-strings-output.txt
    
por 16.07.2011 / 17:40
3

Aqui está um começo: imprima apenas o texto entre BEGIN:VCARD e END:VCARD . Isso pressupõe que sempre há uma nova linha entre o END:VCARD e o BEGIN:VCARD .

sed -n -e 's/.*[^A-Z]BEGIN:VCARD/BEGIN:VCARD/' \
       -e 's/END:VCARD[^A-Z].*/END:VCARD/' \
       -e '/BEGIN:VCARD/,/END:VCARD/p'
    
por 16.07.2011 / 17:47