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

168*_*556 6 sed awk base64

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

内容传输编码:base64

RGVhciBMdWlzLA0KICANCkdvb2QgbW9uaW5nIQ0KT3VyIEJhbmsgYWNjb3VudCBpcyB1bmRlcmdvaW5nIGF1ZGl0IGZvciB0aGUgZmlzY2FsIHllYXIgYXMgcmVxdWlyZWQgYnkgdGhlIGNoaW5hIGZvcmVpZ24gY3VycmVuY3kgY29udHJvbCBwb2xpY3kgYW5kIHRoZSBhY2NvdW50IHdpbGwgbm90IGJlIGF2YWlsYWJsZSB1bnRpbCB0aGUgQ2hpbmVzZSB0YXggYnVyZWF1cyBhcmUgc 2F0aXNmaWVkIHRoYXQgYWxsIGFwcGxpY2FibGUgdGF4ZXMgaGF2ZSBiZWVuIHBhaWQgdXAuIFBsZWF​​zZSBob2xkIHBheW1lbnQgc28gaSBjYW4gZnVybmlzaCB5b3Ugd2l0aCBvdXIgcmV2aXNlZCBiYW5raW5nIGluZm9ybWF0aW9uLiAgDQoNCiAgDQpCZXN0IHJlZ2FyZHMNCiANCkRhdmlk

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

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

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


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

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

我不知道如何仅提取代码的 base64 部分,或者它是否包含两个 base64,仅提取第一个。我可能会使用sedawk,但我不知道如何假设我会查找:

  1. base64
  2. -==_部分_

修剪空行,我有 base64 但是如果有 2 个 base64 部分呢?我想要第一个。

Wil*_*ard 3

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

\n

我想回答这部分:

\n
\n

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

\n

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

\n
\n

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

\n
sed -n '/base64/,${p;/=_Part_/q;}' inputfile\n
Run Code Online (Sandbox Code Playgroud)\n

解释:

\n

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

\n

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

\n

p意思是打印该行。

\n

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

\n

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

\n

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

\n