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.