You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条awk/sed命令解析keystore获取别名与过期时间

问题

需要解析keystore文件,仅提取Alias name:对应的别名,以及until:后的证书过期时间,要求用awk或sed实现单条命令。此前已通过两条分开的keytool命令分别获取对应值,现希望合并为一条命令。

示例输入(keystore文件内容)

Alias name: Vaerikeysamplename004
Creation date: Mar 25, 2004
Entry type: trustedCertEntry

Owner: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 1 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
Issuer: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 1 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
Serial number: 1234jeyjfffdfd
Valid from: Sun May 17 20:00:00 EDT 1998 until: Tue Aug 01 19:59:59 EDT 2028
Certificate fingerprints:
         MD5:  DB:23:3D:F9:99:FA:4B:33:95:ee:44:73:5E:7D:41:83
         SHA1: 27:3E:ss:24:57:FD:C4:F9:0C:55:E8:2B:56:16:ff:62:F5:32:E5:47
         SHA256: 34:1D:E9:8B:13::6E:C6:5B:9A:51:CE:6E:D0:67:D0:0E:C7:CE:9B:7F
Signature algorithm name: RSASHASAM
Subject Public Key Algorithm: 1024-bit RSA key
Version: 1

期望输出

Vaerikeysamplename004 Tue Aug 01 19:59:59 EDT 2028

解决方案

可以用awk实现单条命令,同时提取别名和过期时间并合并输出:

1. 直接处理keystore文件

awk '/Alias name:/{alias=$3} /until:/{for(i=8;i<=NF;i++) time=time" "$i} END{print alias, substr(time,2)}' your_keystore_file

2. 直接对接keytool输出(无需保存文件)

如果是通过keytool命令直接读取keystore信息,可将输出管道给awk:

keytool -list -v -keystore your_keystore_file -storepass your_password | awk '/Alias name:/{alias=$3} /until:/{for(i=8;i<=NF;i++) time=time" "$i} END{print alias, substr(time,2)}'

命令说明

  • /Alias name:/{alias=$3}:匹配到Alias name:行时,提取第3个字段作为别名
  • /until:/{for(i=8;i<=NF;i++) time=time" "$i}:匹配到包含until:的行时,从第8个字段开始拼接所有内容作为过期时间(until:在该行的第7个字段位置)
  • END{print alias, substr(time,2)}:处理完所有行后,输出别名和去掉开头空格的过期时间

内容的提问来源于stack exchange,提问作者Evangeline Amalina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:57:33