在 Linux 上,我有文本文件,每个文件包含 1 或 2 个 base64 代码块。以下是文件的一部分和 1 个 base64 块。
内容传输编码:base64
RGVhciBMdWlzLA0KICANCkdvb2QgbW9uaW5nIQ0KT3VyIEJhbmsgYWNjb3VudCBpcyB1bmRlcmdvaW5nIGF1ZGl0IGZvciB0aGUgZmlzY2FsIHllYXIgYXMgcmVxdWlyZWQgYnkgdGhlIGNoaW5hIGZvcmVpZ24gY3VycmVuY3kgY29udHJvbCBwb2xpY3kgYW5kIHRoZSBhY2NvdW50IHdpbGwgbm90IGJlIGF2YWlsYWJsZSB1bnRpbCB0aGUgQ2hpbmVzZSB0YXggYnVyZWF1cyBhcmUgc 2F0aXNmaWVkIHRoYXQgYWxsIGFwcGxpY2FibGUgdGF4ZXMgaGF2ZSBiZWVuIHBhaWQgdXAuIFBsZWFzZSBob2xkIHBheW1lbnQgc28gaSBjYW4gZnVybmlzaCB5b3Ugd2l0aCBvdXIgcmV2aXNlZCBiYW5raW5nIGluZm9ybWF0aW9uLiAgDQoNCiAgDQpCZXN0IHJlZ2FyZHMNCiANCkRhdmlk
-------=_Part_143209_644876817.1451544132767--
我可以使用哪个命令从文件中提取第一个 base64?
我的目标是将输出解码为可读
示例文件解码命令:https : //superuser.com/a/663397
示例短语解码命令:https : //askubuntu.com/a/178546
我不知道如何仅提取代码的 base64 部分,或者它是否包含两个 base64,仅提取第一个。我可能会使用sed或awk,但我不知道如何假设我会查找:
修剪空行,我有 base64 但是如果有 2 个 base64 部分呢?我想要第一个。
我不确定我完全理解你的所有问题,但似乎你已经弄清楚了其中的一部分,只需要一种方法来修剪你想要输入到命令中的文本base64。
我想回答这部分:
\n\n\n我假设我会查找 a) base64 和 b) ------=部分
\n修剪空白行,我有 Base64 但如果有 2 个 Base64 怎么办,我想要第一个
\n
您可以使用以下命令打印从第一个实例base64到第一个实例之后的所有行:=_Part_sed
sed -n '/base64/,${p;/=_Part_/q;}' inputfile\nRun Code Online (Sandbox Code Playgroud)\n解释:
\n-n禁止打印每一行的默认操作。
/base64/,$将以下代码块从 的第一个实例应用base64到文件末尾。($在此上下文中表示最后一行。)
p意思是打印该行。
/=_Part_/是一种模式,它限制q其后面的命令,以便仅当该行包含=_Part_.
该q命令退出sed,导致所有后续行根本不被处理。
所有这一切的结果与从 \xe2\x80\x94 打印的更简单版本非常相似,但这个更简单的版本会打印多个这样的部分,而不是在第一个之后停止。sed -n '/base64/,/=_Part_/p' inputfilebase64=_Part_