Preciso colocar arquivos binários em formato de texto. Anos atrás, usei uuencode/uudecode e foi fácil:
uuencode file.xls > file.txt
# Delete file.xls
# Do whatever with file.txt
# Now I need file.xls back
uudecode file.txt > file.xls
Mas uuencode/uudecode não está no meu sistema e, quando olho em volta, o processo yum/rpm é feio - isso me dá a pista de que talvez ninguém mais o use e, em vez disso, há algo mais moderno para fazer isso.
Eu olhei para xxd e hexdump, mas não consegui fazê-los. Podem ser apenas problemas idiotas do usuário.
O que posso usar no Linux para fazer isso? Gostaria que fosse algo que tende a estar na instalação nativa, então não preciso fazer yum/rpm, se possível.
Apenas para sua compreensão, o que estou tentando fazer especificamente agora é controlar o código-fonte de um arquivo *.xls, mas a ferramenta corporativa não permite a entrada de *.xls. Respeito essa restrição normalmente, mas no meu contexto, um *.xls. xls é uma tabela de configuração para o meu código, então élogicamentecomo o código-fonte, mas o gatilho SVN corporativo é físico - se for *.xls, ele será rejeitado, então irei codificá-lo e controlar a origem do arquivo *.txt.
Obrigado!
Responder1
Entendi:
xxd -p excel.xlsx > excel.xxdp
xxd -p -r excel.xxdp > recover.xlsx
diff excel.xlsx recover.xlsx
Responder2
Esses (uuencode/uudecode) geralmente são empacotados como parte desharutils
(veja também seu valor nominallocal na rede Internet).
Esta pergunta já foi feita antes:
Responder3
Existe um programa python que você pode usar para isso.
$ python hexdump.py abc.tar > abc.ascii
$ python hexdump.py -r abc.ascii > def.tar
$ md5sum abc.tar def.tar abc.ascii
e4733a492d5ae78d9e163a9ec808b6ae abc.tar
e4733a492d5ae78d9e163a9ec808b6ae def.tar
b56a0ed4d794c0cf6084ddb9e7c862f8 abc.ascii
$ ls -pla abc*
-rw-r--r--. 1 60001 60001 61514 Mar 13 16:08 abc.ascii
-rw-r--r--. 1 60001 60001 12775 Mar 13 15:33 abc.tar