目录

用 Shell 脚本取出 FreeBSD.org 的 PGP 公钥列表中的公钥

问题

已知这些文件包含若干便于人类阅读的信息头(例如Key fingerprint),以及一个标准的 PGP Public Key block,如何取出那个标准的 PGP Public Key block?

已知此文件的大致格式如下:

// sh addkey.sh delphij 40797F7C95F4834F 1103E2EB9759E4C5 ;

[.literal-block-margin]
....
pub   rsa4096/40797F7C95F4834F 2018-09-07 [SC] [expires: 2023-10-31]
      Key fingerprint = 71E3 60E4 D10C 6489 22F3  49D0 4079 7F7C 95F4 834F
uid                            Xin LI <delphij@FreeBSD.org>
[...]
sub   cv25519/CB7DF69E70E064C1 2023-09-05 [E]

....

[.literal-block-margin]
....
-----BEGIN PGP PUBLIC KEY BLOCK-----
[... 公钥 ...]
-----END PGP PUBLIC KEY BLOCK-----

用 sed 可破:

sed -ne '/-----BEGIN PGP PUBLIC KEY BLOCK-----/,/-----END PGP PUBLIC KEY BLOCK-----/p'