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

时间:2018-10-09 20:13:50

标签: bash macos

我有一个文件,其中包含多个以换行符分隔的base64编码的字符串:

Y2F0Cg==
ZG9nCg==
ZmlzaAo=

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

cat
dog
fish

但我只看到:

cat

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

2 个答案:

答案 0 :(得分:3)

while read line; do base64 -D <<< "$line"; done < b64s.txt

在我的Linux系统上,使用GNU coreutils 8.28,其解码标志为-d,它会自动解码具有多个字符串的文件:

$ base64 -d b64s.txt
cat
dog
fish

答案 1 :(得分:1)

macOS中的库存/usr/bin/base64仅解码输入文件中的第一个字符串。但是base64解码器千差万别,即使在SO中,也有很多关于该主题的讨论。

默认情况下,macOS中安装了Python,并且可能位于/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