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

如何grep搜索字符串并剔除指定前缀?提取SSL证书到期日期

提取SSL证书到期日期的时间部分

问题描述

我尝试用这条命令查询SSL证书的到期日期:

openssl s_client -connect ${CERT}:443 </dev/null 2>&1 | openssl x509 -text | grep "Not After"

终端输出格式是:

Not After : Apr 14 10:06:09 2018 GMT

我希望剔除掉前面的“Not After : ”部分,只保留后面的日期时间字符串,恳请帮忙!

解决方案

没问题!这里有几种简单的文本处理方法可以实现你的需求:

方法1:使用sed替换匹配前缀

直接用替换语法把不需要的前缀清空:

openssl s_client -connect ${CERT}:443 </dev/null 2>&1 | openssl x509 -text | grep "Not After" | sed 's/Not After : //'

sed 's/原内容/替换内容/'是最常用的文本替换逻辑,这里把“Not After : ”直接替换为空,剩下的就是你要的日期串了。

方法2:使用awk分割字符串

指定分隔符为“Not After : ”,直接取分割后的第二部分内容:

openssl s_client -connect ${CERT}:443 </dev/null 2>&1 | openssl x509 -text | grep "Not After" | awk -F "Not After : " '{print $2}'

awk会把输入行按指定分隔符拆分成多个字段,这里第二个字段正好就是我们需要的日期时间。

方法3:cut配合sed处理(备选)

如果习惯用cut,可以先按冒号分割,再去掉开头的空格:

openssl s_client -connect ${CERT}:443 </dev/null 2>&1 | openssl x509 -text | grep "Not After" | cut -d ':' -f 2- | sed 's/^ //'

cut -d ':' -f 2-会提取第二个冒号后的所有内容(此时开头会多一个空格),再用sed 's/^ //'把开头空格去掉即可。

前两种方法更直接,推荐优先使用sed或awk的方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:37:43