Como extrair o primeiro código base64 do arquivo?

6

No Linux, estou tendo arquivos de texto e cada um contém 1 ou 2 blocos de código base64. A seguir está parte do arquivo e 1 bloco base64.

Content-Transfer-Encoding: base64

RGVhciBMdWlzLA0KICANCkdvb2QgbW9uaW5nIQ0KT3VyIEJhbmsgYWNjb3VudCBpcyB1bmRlcmdvaW5nIGF1ZGl0IGZvciB0aGUgZmlzY2FsIHllYXIgYXMgcmVxdWlyZWQgYnkgdGhlIGNoaW5hIGZvcmVpZ24gY3VycmVuY3kgY29udHJvbCBwb2xpY3kgYW5kIHRoZSBhY2NvdW50IHdpbGwgbm90IGJlIGF2YWlsYWJsZSB1bnRpbCB0aGUgQ2hpbmVzZSB0YXggYnVyZWF1cyBhcmUgc 2F0aXNmaWVkIHRoYXQgYWxsIGFwcGxpY2FibGUgdGF4ZXMgaGF2ZSBiZWVuIHBhaWQgdXAuIFBsZWFzZSBob2xkIHBheW1lbnQgc28gaSBjYW4gZnVybmlzaCB5b3Ugd2l0aCBvdXIgcmV2aXNlZCBiYW5raW5nIGluZm9ybWF0aW9uLiAgDQoNCiAgDQpCZXN0IHJlZ2FyZHMNCiANCkRhdmlk

------=_Part_143209_644876817.1451544132767--

Qual comando posso usar para extrair a primeira base64 do arquivo?

Meu objetivo é decodificar a saída para ser legível

Exemplo de comando de decodificação de arquivo: link

Exemplo de comando de decodificação de frase: link

Eu não sei como extrair apenas a parte base64 do código ou se ela contém dois base64, apenas o primeiro. Posso usar sed ou awk , mas não sei como suponho que procurarei:

  1. base64
  2. ------ = _ Parte _

Apare as linhas em branco e eu estou tendo base64 Mas e se houver 2 seções base64? Eu quero ter o primeiro.

    
por 16851556 31.12.2015 / 12:57

1 resposta

3

Não tenho certeza se entendi completamente sua pergunta, mas parece que você já teve uma parte dela e já precisa de uma maneira de reduzir o texto que deseja inserir no comando base64 .

Eu quero responder a esta parte:

i assume i will lookup for a) base64 and b) ------=Part

trim the blank lines and im having base64 but what if there are 2 base64, i want first one

Você pode imprimir todas as linhas da primeira instância de base64 para a primeira após a instância de =_Part_ com o seguinte comando sed :

sed -n '/base64/,${p;/=_Part_/q;}' inputfile

Explicação:

-n suprime a ação padrão de imprimir cada linha.

/base64/,$ aplica o seguinte bloco de código da primeira instância de base64 ao final do arquivo. ( $ significa a última linha neste contexto.)

p significa imprimir a linha.

/=_Part_/ é um padrão que limita o comando q que o segue para que seja executado apenas se a linha contiver =_Part_ .

O comando q fecha sed , fazendo com que todas as linhas subseqüentes não sejam processadas.

O resultado de tudo isso é muito semelhante ao mais simples sed -n '/base64/,/=_Part_/p' inputfile , que imprimiria de base64 a =_Part_ , mas essa versão mais simples imprimiria várias dessas seções em vez de parar após a primeiro.

    
por 03.01.2016 / 08:16

Tags