Java keytool 命令用于管理 Java 密钥库。在这种情况下,我列出了任何 Java 运行时附带的 cacerts 文件的内容。命令是:
keytool -list -keystore ./cacerts -storepass somethingorother
输出如下所示:
Keystore type: jks Keystore provider: SUN
Your keystore contains 164 entries
wizardgeneratedalias, Nov 17, 2020, trustedCertEntry, Certificate fingerprint (SHA1):BA:14:BF:5D:17:2F:F8:FE:29:44:90:12:46:C1:46:B1:C6:80:CB:6F securetrustca [jdk], Nov 7, 2006, trustedCertEntry,
Certificate fingerprint (SHA1): 87:82:C6:C3:04:35:3B:CF:D2:96:92:D2:59:3E:7D:44:D9:34:FF:11
在标题之后,每个证书以两行显示,第一行以存储证书的别名(“wizardgeneratedalias”)开头,以“trustedCertEntry”结尾,第二行以“证书指纹”开头。
我想将这两行动态组合成一条,这样我就可以通过管道传递到下一个命令,无论是 grep 还是 sort 或 whatevs。
在 vim 中非常简单:
:g/trustedCert/s/,$\n/, /
基本上在这里搜索带有字符串“trustedCert”的任何 (g/) 行,在行尾查找逗号和换行符,然后用逗号和空格替换它。
我从来没有想过如何用 awk 或 sed (无论如何不是真正的 sed 的东西)或 perl 来做到这一点。
谢谢!