首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接来自'keytool -list‘输出的证书行

连接来自'keytool -list‘输出的证书行
EN

Stack Overflow用户
提问于 2020-11-19 04:49:07
回答 4查看 243关注 0票数 1

Java keytool命令用于管理Java密钥库。在本例中,我列出了任何Java命令附带的runtime.The文件的内容:

代码语言:javascript
复制
keytool -list -keystore ./cacerts -storepass somethingorother

输出如下所示:

代码语言:javascript
复制
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还是其他任何东西。

在vim中,这非常简单:

代码语言:javascript
复制
:g/trustedCert/s/,$\n/, /

基本上在这里搜索任何带有字符串"trustedCert“的(g/)行,查找行尾的逗号和换行符,并将其替换为逗号和空格。

我只是从来没有摸索过如何使用awk或sed (无论如何不是sed的东西)或perl来做到这一点。

谢谢!

EN

回答 4

Stack Overflow用户

发布于 2020-11-19 06:43:52

在每个UNIX机器上的任何shell中使用任何awk,而不将整个输入读取到内存中(在这种特定情况下可能不是什么大问题):

代码语言:javascript
复制
$ cat file | awk '{printf "%s%s", $0, (/trustedCertEntry,[[:space:]]*$/ ? "" : ORS)}'
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

在上面的代码中,我只是使用cat file来代替你正在运行的任何你想通过管道传递给awk的命令。

票数 1
EN

Stack Overflow用户

发布于 2020-11-19 04:55:32

要删除包含字符串trustedCert的行上的换行符chomp,只需执行以下操作:

代码语言:javascript
复制
perl -pe'chomp if /trustedCert/' 

根据您使用此命令的方式,应用程序会有所不同。

票数 0
EN

Stack Overflow用户

发布于 2020-11-19 05:16:42

直接的等价物是

代码语言:javascript
复制
perl -pe'/trustedCert/ and s/,\n/, /'

但不需要执行两个匹配。

代码语言:javascript
复制
perl -pe's/trustedCert.*,\K\n/ /'

Specifying file to process to Perl one-liner

TLP's solution不会检查逗号,也不会用空格替换换行符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64901150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档