从标准输入解码多个base64字符串

问题描述 投票:2回答:2

我有一个文件,其中包含由新行字符分割的多个base64编码字符串:

Y2F0Cg==
ZG9nCg==
ZmlzaAo=

当我执行:cat b64s.txt | base64 -D时,我希望看到:

cat
dog
fish

但我只看到:

cat

从标准读取的每一行执行base64 -D的简单方法是什么?

bash macos
2个回答
3
投票
while read line; do base64 -D <<< "$line"; done < b64s.txt

对于它的价值,在我的带有GNU coreutils 8.28的Linux系统上,解码标志是-d,它会自动解码一个包含多个字符串的文件:

$ base64 -d b64s.txt
cat
dog
fish

1
投票

macOS中的库存/usr/bin/base64只会解码输入文件中的第一个字符串。但是base64解码器变化很大,甚至在SO中对这个话题进行了相当多的讨论。

默认情况下,Python安装在macOS中,可能存在于/usr/bin/python的Python 2.7解释器可能会按照您的需要运行。

$ uname -a
Darwin ghoti.local 15.6.0 Darwin Kernel Version 15.6.0: Tue Jan 30 11:45:51 PST 2018; root:xnu-3248.73.8~1/RELEASE_X86_64 x86_64
$ cat i
Y2F0Cg==
ZG9nCg==
ZmlzaAo=
$ python -m base64 -d < i
cat
dog
fish
© www.soinside.com 2019 - 2024. All rights reserved.