如何从文件中提取第一个base64代码?

如何从文件中提取第一个base64代码?

在 Linux 上,我有文本文件,每个文件包含 1 或 2 个 base64 代码块。以下是文件的一部分和 1 个 base64 块。

内容传输编码:base64

RGVhciBMdWlzLA0KICANCkdvb2QgbW9uaW5nIQ0KT3VyIEJhbmsgYWNjb3VudCBpcyB1bmRlcmdvaW5nIGF1ZGl0IGZvciB0aGUgZmlzY2FsIHllYXIgYXMgcmVxdWlyZWQgYnkgdGhlIGNoaW5hIGZvcm VpZ24gY3VycmVuY3kgY29udHJvbCBwb2xpY3kgYW5kIHRoZSBhY2NvdW50IHdpbGwgbm90IGJlIGF2YWlsYWJsZSB1bnRpbCB0aGUgQ2hpbmVzZSB0YXggYnVyZWF1cyBhcmUgc 2F0aXNma WVkIHRoYXQgYWxsIGFwcGxpY2FibGUgdGF4ZXMgaGF2ZSBiZWVuIHBhaWQgdXAuIFBsZWF​​zZSBob2xkIHBheW1lbnQgc28gaSBjYW4gZnVybmlzaCB5b3Ugd2l0aCBvdXIgcmV2aXNlZCBiYW5raw5 nIGluZm9ybWF0aW9uLiAgDQonCiagDQpCZXN0IHJlZ2FyZHMNCiANCKRhdmlk

------=_Part_143209_644876817.1451544132767--

我可以使用哪个命令从文件中提取第一个 base64?

我的目标是将输出解码为可读


文件解码命令示例:https://superuser.com/a/663397

短语解码命令示例:https://askubuntu.com/a/178546

我不知道如何仅提取代码的 Base64 部分,或者如果它包含两个 Base64,则仅提取第一个。我可以使用sedor awk,但我不知道如何假设我会查找:

  1. 64位基数
  2. ------=_部分_

修剪空白行,我就得到了 Base64 但是如果有 2 个 Base64 部分怎么办?我想要第一个。

答案1

我不确定我完全理解你的所有问题,但似乎你已经弄清楚了其中的一部分,只需要一种方法来修剪你想要输入到命令中的文本base64

我想回答这部分:

我假设我会查找 a) base64 和 b) ------=部分

修剪空白行,我有 Base64 但如果有 2 个 Base64 怎么办,我想要第一个

您可以使用以下命令打印从第一个实例base64到第一个实例之后的所有行:=_Part_sed

sed -n '/base64/,${p;/=_Part_/q;}' inputfile

解释:

-n禁止打印每一行的默认操作。

/base64/,$将以下代码块从 的第一个实例应用base64到文件末尾。 ($在此上下文中表示最后一行。)

p意思是打印该行。

/=_Part_/是一种模式,它限制q其后面的命令,以便仅当该行包含=_Part_.

q命令退出sed,导致所有后续行根本不被处理。

这一切的结果是非常相似的到更简单的版本sed -n '/base64/,/=_Part_/p' inputfile,它会打印从base64=_Part_- 但这个更简单的版本会打印多个这样的部分,而不是在第一个之后停止。

相关内容