
Linuxには、それぞれ1〜2個のbase64コードブロックを含むテキストファイルがあります。以下はファイルの一部と1つのbase64チャンクです。
コンテンツ転送エンコーディング:base64
RGVhciBMdWlzLA0KICANCkdvb2QgbW9uaW5nIQ0KT3VyIEJhbmsgYWNjb3VudCBpcyB1bmRlcmdvaW5nIGF1ZGl0IGZvciB0aGUgZmlzY2FsIHllYXIgYX v cm VpZ24gY3VycmVuY3kgY29udHJvbCBwb2xpY3kgYW5kIHRoZSBhY2NvdW50IHdpbGwgbm90IGJlIGF2YWlsYWJsZSB1bnRpbCB0aGUgQ2hpbggg aXN ma WVkIHRoYXQgYWxsIGFwcGxpY2FibGUgdGF4ZXMgaGF2ZSBiZWVuIHBhaWQgdXAuIFBsZWFzZSBob2xkIHBheW1lbnQgc28gaSBjYW4gZb NlZCBiY W5 Raw 5 niGluZm9ybWF0aW9uLiAgDQonCiagDQpCZXN0IHJlZ2FyZHMNCiANCKRhdmlk
------=_Part_143209_644876817.1451544132767--
ファイルから最初のbase64を抽出するには、どのコマンドを使用できますか?
私の目標は、出力を読み取ることができるようにデコードすることです。
ファイルデコードコマンドの例:https://superuser.com/a/663397
構文復号化コマンドの例:https://askubuntu.com/a/178546
コードのBase64部分のみを抽出する方法がわからない場合、または2つのBase64が含まれている場合は、最初の部分のみを抽出する方法がわかりません。sed
orを使用できますが、awk
次のものが見つかると仮定する方法がわかりません。
- 64ビットベース
- ------=_部分_
空白行をトリミングするとBase64が出ますが、Base64部分が2つあればどうなりますか?初めて欲しいです。
答え1
あなたの質問をすべて完全に理解したかどうかはわかりませんが、一部の内容は理解されており、コマンドに入力したいテキストをトリミングする方法が必要なようですbase64
。
私はこの部分についてこう答えたいと思います。
私はa) base64とb) ------=を見つけると仮定します。部分
空の行を整えてください。 Base64があり、Base64が2つある場合は、最初のものが必要です。
次を使用して、最初のインスタンスから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_