【发布时间】:2017-10-11 08:41:29
【问题描述】:
我正在尝试编写一个小的 shell 脚本,它可以读取文本文件(作为参数给出),删除所有无效的 Base64 字符,然后将此 Base64 字符串解码为可读的文本。
对于这个例子,我可以假设,我有一个有效的 Base64 字符串被额外的无效字符污染。所以简单地删除它们会使字符串再次有效。
我遇到了“删除所有无效字符”部分的问题。
这是我的脚本:
#!/bin/bash
args=("$@")
#echo ${args[0]}
# read file
STRING="$(cat ${args[0]})"
echo "Input:"
echo $STRING
echo "\n"
#BASE64_REGEX='!/[^A-Za-z0-9+\/=]/'
STRING=${STRING//[!?_-]/}
echo "Fixed:"
echo $STRING
echo "\n"
# decode String
DECODED=$(base64 -d <<< "$STRING")
echo "Decoded:"
echo $DECODED
echo "\n"
我认为我的问题是这里的这部分STRING=${STRING//[!?_-]/}。在此操作之后,字符串包含??___--- + 换行符,所以我必须以某种方式关闭。
编辑: 这将是示例字符串。我尝试删除所有字符,它们是 NOT Base64 字母的一部分。
!RGllIGVpbnppZ2VuIFNvbmRlc??nplaWNoZW4gaW0gQmFzZTY0IEFscGhhYmV0IHNpbmQgIisg_L_y_A9Ii4gQWxsZSB3ZWl0ZXJlbi-B-T-b25kZXJ6!ZWljaGVuICIhIsKnJCUiIGtvbW1!lbiBkb3J0IG5pY2h0IHZvci"4=
感谢您的帮助!
【问题讨论】:
-
你能给我们实际的字符串以及你想用什么替换它吗?这些信息没有帮助。你的文件内容是什么?
-
你想在这里删除什么?
-
我添加了缺失的信息。对不起:)